Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zadanie z MySql zwiażane z grupowaniem
Forum PHP.pl > Forum > Bazy danych > MySQL
Sajrox
Witam,

Mam pewne zadanko z SQLa:
Dana jest tabela pracownicy o kolumnach imie, nazwisko, pensja.
Napisz zapytanie, które zwróci wszystkich pracowników, których nazwiska istnieją w bazie 3 lub wiecej razy.
Przykladowo zapytanie zwraca 2 rekordy:
grzegorz | nowak | 1600
marek | nowak | 1800
darek | nowak | 1200

Rozwiązałem je tak:
  1. SELECT
  2. p1.nazwisko,
  3. p1.pensja
  4. FROM pracownicy AS p1
  5. LEFT JOIN (SELECT count(id) AS c, nazwisko FROM pracownicy GROUP BY nazwisko) AS p2 ON p1.nazwisko=p2.nazwisko
  6. WHERE p2.c >= 3


Czy to jest wydajny sposób weług was ? Czy można to napisać inaczej
skowron-line
Średnio wydajny.
Zainteresuj się klauzulą HAVING.
Sajrox
  1. SELECT
  2. imie,
  3. nazwisko,
  4. pensja
  5. FROM pracownicy
  6. GROUP BY nazwisko HAVING count(nazwisko) >= 3


Niestety to zapytanie zwraca tylko 1 pozycje zamiast 3.
erix
no i? chyba o to Ci chodzi, żeby zwróciło nazwisko? Jeśli ma wszystkie rekordy zwracać, to walnij to jako podzapytanie, które będzie warunkiem dla zewnętrznego.
Sajrox
NO wlasnie o to chodzi że ma zwrócić wszystkich Nowaków pod warunkiem że jest ich minum 3
skowron-line
Daj sobie w select -ie count(nazwiska) i zobacz jakie wartości zwraca.
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.