Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyszukiwanie i paginacja
Forum PHP.pl > Forum > Przedszkole
Jdwind
Witam,
chciałbym zrobić wyszukiwanie z bazy MySQL z paginacją tego wyniku. Mam zapytanie:
  1. $sql = "SELECT t.id, t.imie, t.nazw, t.jednostka, t.zamow, t.tryb, n.numer, t.nazwa, t.data_umowy, t.zarez, t.umowa, t.szacunk, t.netto, t.brutto, t.kwotzew, t.login_id, t.dodane, t.stanowisko
  2. FROM tab1 AS t
  3. LEFT JOIN login AS l ON t.login_id=l.lid
  4. LEFT JOIN numery AS n ON t.id=n.id WHERE t.pstate='1'";

i numer wierszy z tego zapytania pobieram przez $rowcount = $rezult->num_rows po wykonaniu powyższego zapytania. Przeczytałem tutaj na forum, że to może i dobre rozwiązanie, ale przy małej ilości danych. Gorzej, jeżeli wynik będzie liczył np. 100 tys. lub więcej wierszy, mogę zarżnąć serwer, powinienem raczej użyć COUNT(*). Ale jak tego użyć przy moim zapytaniu, z trzech różnych tabel? Będę wdzięczny za podpowiedź.
nospor
Cytat
Ale jak tego użyć przy moim zapytaniu, z trzech różnych tabel? Będę wdzięczny za podpowiedź.

To nei ma zadnego znaczenia ile masz JOINow. count(*) dziala tak samo.
Jdwind
A mogę prosić o podpowiedź, gdzie wcisnąć COUNT? Nie wiem, jak go użyć, żeby zliczyć wynikowe wiersze zamiast używać pełnego zapytania i num_rows? Czy mam użyć COUNT(*) czy COUNT(np. t.id?). Próbowałem się sugerować tym tematem http://forum.php.pl/index.php?showtopic=26...mp;hl=paginacja, ale nie do końca chyba rozumiem, co zlicza COUNT.
nospor
$sql = "SELECT count(t.id)
FROM tab1 AS t
LEFT JOIN login AS l ON t.login_id=l.lid
LEFT JOIN numery AS n ON t.id=n.id WHERE t.pstate='1'";
Jdwind
Dziękuję, już sprawdzam czy mi się uda to skleić. Właśnie zauważyłem link do stronicowania w Twojej stopce smile.gif
Pozdrawiam

Działa super, dziękuję jeszcze raz. A proszę mi powiedzieć, czy mogę do tego dodać sumę kolumny? Czyli:
  1. $sql = "SELECT count(t.id), SUM(t.netto) AS suma
  2. FROM tab1 AS t
  3. LEFT JOIN login AS l ON t.login_id=l.lid
  4. LEFT JOIN numery AS n ON t.id=n.id WHERE t.pstate='1'";

Dotychczas robiłem całe zapytanie, potem num_rows a sumę liczyłem w pętli przy wyświetlaniu. Wyświetlałem całą zawartość (tabela ma póki co jakieś 2000 wierszy), teraz przy paginacji sumę wyświetlę tylko na ostatniej stronie.
nospor
Mozesz dodac sume. A na przyszlosc mozesz tez sprawdzic zanim napiszesz wink.gif
Jdwind
Oczywiście sprawdziłem wcześniej, i widziałem że działa, tylko ja mam takie może dziwne podejście, że nie zawsze wierzę w to, co widzę i wolę zapytać, jeśli nie mogę znaleźć jasnej informacji. Mam do zsumowania ogólnie dwie kolumny (netto i brutto - chociaż może i lepiej będzie tylko pomnożyć netto razy 1,23 zamiast ładować to w zapytanie, bo podatek się nie zmienia) i zastanawiałem się, czy nie lepiej zrobić to osobnym zapytaniem. Dziękuję jeszcze raz za pomoc.
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.