Proste zapytanie SQL

M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Mam "Wyświetlić czytelnika, który wypożyczył najwięcej książek"

Stworzyłem sobie już takie zapytanie, które pokazuje dane dla wszystkich czytelników i przedstawia w postaci Nazwisko czytelnika | liczba wypożyczeń i posortowałem je w kolejności malejącej:

Kopiuj
SELECT CZYTELNIK.NAZWISKO, COUNT(WYPOZYCZENIA.ID_CZYT) AS "LICZBA WYPOZYCZEN CZYTELNIKA" FROM WYPOZYCZENIA
LEFT JOIN CZYTELNIK
ON WYPOZYCZENIA.ID_CZYT = CZYTELNIK.ID_CZYT
GROUP BY CZYTELNIK.NAZWISKO ORDER BY "LICZBA WYPOZYCZEN CZYTELNIKA" DESC 

teraz chciałbym aby został mi wyświetlony tylko 1 rekord. Próbowałem jakoś z top 1 albo rownum <= 1 ale za każdym razem wywalało błąd.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
0

Podaj jak próbowałeś i jaki błąd dostałeś. I o jakim silniku mówimy bo TOP jest w mssql, w mysql używa sie LIMIT...

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1
  1. Masz złe grupowanie. Chyba że zapewnisz unikalność nazwisk w bazie.
  2. Niepotrzebny LEFT JOIN. Zwykły JOIN wystarczy.
  3. Zakładając że to Ora, to:
Kopiuj
SELECT * FROM (twoje zapytanie) x WHERE rownum<=1
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Dokładnie skorzystaj z funkcji podzapytania jak kolega wyżej podpowiada. W przypadku mssql będzie to.
SELECT TOP 1 FROM (twoje zapytanie);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.