Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie tylko powtarzających się rekordów w danej kolumnie
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
Cokpit
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...
Zbłąkany
Poczytaj o klauzuli GROUP BY i HAVING smile.gif
Cokpit
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
  3. HAVING (questionmark.gifquestionmark.gif)


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 questionmark.gifquestionmark.gif aby działało
Zbłąkany
  1. SELECT nrnad , imie , nazwisko FROM bliscy GROUP BY imie , nrnad , relacja HAVING ( imie > 1 );
Cokpit
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
wookieb
  1. count(imie)>1
Cokpit
  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 snitch.gif wykonuje się 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ę?questionmark.gif
prachwal
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
Zbłąkany
Spróbuj tak:
  1. SELECT nrnad , bimie , relacja , COUNT(*) AS c FROM bliscy GROUP BY bimie , nrnad , relacja HAVING ( c > 1 );
Cokpit
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...
prachwal
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 winksmiley.jpg
Cokpit
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...
jmail
  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
Cokpit
  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 smile.gifsmile.gifsmile.gifsmile.gif
Nareszcie wszystko działa...
yahoo.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.