Content
Ograniczenie wyników zapytania
Czasami chcemy w ramach statystyk wyświetlić np. tylko 10 pierwszy wierszy. Na przykład chcemy wyświetlić 10 zawodników, którzy zdobyli najwięcej punktów.
Można to zrobić w sposób prosty: wybrać wszystkich zawodników malejąco według zdobytych punktów, podczas wyświetlania kolejnych wierszy odliczać a przy dziesiątym wierszu przerwać pętle odpowiadającą za wyświetlanie wierszy. Takie rozwiązanie na pierwszy rzut oka wydaje się odpowiednie jednak tak nie jest. Gdy wysyłamy zapytanie do bazy danych o wybranie zawodników malejąco według zdobytych punktów serwer MySQL musi wybrać wszystkie rekordy z tabeli! To jest trochę pracy ;) Musimy wysłać zapytaniem SQL informacje o tym, że interesuje nas tylko pierwszych dziesięć wierszy - zrobimy to za pomocą klauzuli LIMIT według schematu:
SELECT nazwa_pola FROM nazwa_tabeli LIMIT wartosc
Gdzie wartosc jest ilością pól, które chcemy wyświetlić. Oczywiście klauzulę LIMIT możemy mieszać razem z klauzulami WHERE i ORDER BY, przykład:
$tresc_zapytania = 'SELECT `nazwisko`, `punkty` FROM `nba` WHERE `lata` > 5 ORDER BY `punkty` LIMIT 10';
$zapytanie = mysql_query($tresc_zapytania);
if (mysql_num_rows($zapytanie) > 0) { while($wiersz = mysql_fetch_row($zapytanie)) { echo 'Gracz '.$wiersz[0].' zdobył '.$wiersz[1].' puntów(y).'; } }
else echo 'Nie znaleziono żadnych graczy.';
Powyższy kod wyświetli dziesięciu zawodników, którzy grają przynajmniej już 5 lat.