Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyświetlanie tylko powtarzających się rekordów w danej kolumnie, SQL
Cokpit
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.07.2009

Ostrzeżenie: (0%)
-----


Witam serdecznie,
jak napisać w sql'u aby wyświetliły się tylko powtarzające się rekordy w określonej kolumnie.
Na przykład aby wyświetlały się tylko te rekordy z tabeli "studenci" w których w kolumnie "imie" powtarzają się wartości w kolejnych rekordach.
Czyli jeśli występuje w tabeli 5 studentów o imieniu Czarek i 3 o imieniu Ania to powinien wyświetliś 8 rekordów z ich danymi...

Próbowałem coś takiego

  1. SELECT p1.*
  2. FROM Student AS p1, Student AS p2
  3. WHERE p1.imie=p2.imie AND p1.student_id!=p2.student_id


Niestety wyświetla mi bardzo dużo rekordów...
Go to the top of the page
+Quote Post
Zbłąkany
post
Post #2


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

Ostrzeżenie: (0%)
-----


Poczytaj o klauzuli GROUP BY i HAVING (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Cokpit
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.07.2009

Ostrzeżenie: (0%)
-----


hmm...
coś kombinuję ale nie wychodzi mi do końca, nie wiem jaki warunek wpisać w
  1. HAVING
aby wybierał tylko powtarzające się wartości

Napisałem coś takiego
  1. SELECT nrnad, imie, relacja
  2. FROM bliscy GROUP BY imie, nrnad, relacja


z tabeli bliscy chcę wybrać tylko tych którzy mają to samo imię, jest ich bodajże 4 a wszystkich 39, niestety nie wiem co wpisać w (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) aby działało

Ten post edytował Cokpit 24.07.2009, 18:50:33
Go to the top of the page
+Quote Post
Zbłąkany
post
Post #4


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

Ostrzeżenie: (0%)
-----


  1. SELECT nrnad , imie , nazwisko FROM bliscy GROUP BY imie , nrnad , relacja HAVING ( imie > 1 );
Go to the top of the page
+Quote Post
Cokpit
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.07.2009

Ostrzeżenie: (0%)
-----


No niestety nie można chyba ustawić tak having...

"Conversion failed when converting the varchar value 'Makary' to data type int."

bimie to varchar(20) a nie int
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. count(imie)>1
Go to the top of the page
+Quote Post
Cokpit
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.07.2009

Ostrzeżenie: (0%)
-----


  1. SELECT nrnad , bimie , relacja
  2. FROM bliscy GROUP BY bimie , nrnad , relacja
  3. HAVING (count( bimie )>1);


To także nie wyświetla żadnych danych...
ale działa (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) wykonuje się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Nie może to tak działać ponieważ "bimie" to nie liczba tylko varchar....

Czy może mi ktoś pomóc aby w having chodziło o wartości typu znakowego powtarzające się?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował Cokpit 30.07.2009, 12:43:54
Go to the top of the page
+Quote Post
prachwal
post
Post #8





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 13.03.2009
Skąd: lublin

Ostrzeżenie: (0%)
-----


rank over , partition i wynik tego czegoś przy grupowaniu większy od 1 to są powtórzenia

http://weblogs.sqlteam.com/jeffs/archive/2...3/28/60146.aspx

nie napisze ci tego bo to nie edukacyjne

ps. to działa tylko na mssql 2005 i nowszym
Go to the top of the page
+Quote Post
Zbłąkany
post
Post #9


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

Ostrzeżenie: (0%)
-----


Spróbuj tak:
  1. SELECT nrnad , bimie , relacja , COUNT(*) AS c FROM bliscy GROUP BY bimie , nrnad , relacja HAVING ( c > 1 );
Go to the top of the page
+Quote Post
Cokpit
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.07.2009

Ostrzeżenie: (0%)
-----


Niestety przy takim zapytaniu
  1. SELECT nrnad , bimie , relacja , COUNT(*) AS c
  2. FROM bliscy
  3. GROUP BY bimie , nrnad , relacja
  4. HAVING ( c > 1 );


wyświetla się

Msg 207, Level 16, State 1, Line 4
Invalid column name 'c'.


...niestety nie wiem o które zapytanie ze strony chodzi...

Ten post edytował Cokpit 8.08.2009, 12:28:07
Go to the top of the page
+Quote Post
prachwal
post
Post #11





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 13.03.2009
Skąd: lublin

Ostrzeżenie: (0%)
-----


Cytat(Cokpit @ 8.08.2009, 13:26:33 ) *
Niestety przy takim zapytaniu
  1. SELECT nrnad , bimie , relacja , COUNT(*) AS c
  2. FROM bliscy
  3. GROUP BY bimie , nrnad , relacja
  4. HAVING ( COUNT(*) > 1 );


zaznacz całość i w SQLSERVER MENAGMENT STUDIO skorzystaj z edytora graficznego -> ctrl + shift + Q

przeanalizuj i korzysta - reszta przyjdzie z czasem

  1. SELECT type, COUNT(*) AS Expr1
  2. FROM sys.objects
  3. GROUP BY type
  4. HAVING (COUNT(*) > 1)


przykład na którym testowałem (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował prachwal 10.08.2009, 20:18:02
Go to the top of the page
+Quote Post
Cokpit
post
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.07.2009

Ostrzeżenie: (0%)
-----


kombinuję już od jakiegoś czasu i nie mogę znaleźć błędu w moim rozumowaniu
ciągle działa lecz nie wyświetla żadnych wartości.....
wydaje mi się że nie może być
  1. COUNT(*)

bo tu chodzi tylko o pole
  1. bimie
a nie o wszystkie pola...
Go to the top of the page
+Quote Post
jmail
post
Post #13





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


  1.  
  2. SELECT
  3. *
  4. FROM
  5. Student
  6. WHERE
  7. imie IN
  8. (
  9. SELECT
  10. imie
  11. FROM
  12. Student
  13. GROUP BY
  14. imie
  15. HAVING (count(imie) > 1)
  16. )
  17.  



i specjalnie dla Ciebie RTFM!!

Jak napiszesz, że Ci nie działa to w Managment Studio naciśnij przycisk F1
Go to the top of the page
+Quote Post
Cokpit
post
Post #14





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.07.2009

Ostrzeżenie: (0%)
-----


  1. SELECT NRNAD, BIMIE, RELACJA, PLEC, WIEK
  2. FROM Bliscy
  3. WHERE (BIMIE IN
  4. (SELECT BIMIE
  5. FROM Bliscy
  6. GROUP BY BIMIE
  7. HAVING (COUNT(BIMIE) > 1)
  8. )
  9. );



Ogromne dzięki (IMG:style_emoticons/default/smile.gif) (IMG:style_emoticons/default/smile.gif) (IMG:style_emoticons/default/smile.gif) (IMG:style_emoticons/default/smile.gif)
Nareszcie wszystko działa...
(IMG:style_emoticons/default/yahoo.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.06.2026 - 17:19