Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Wyszukiwanie i paginacja, wyszukiwarka z paginacją
Jdwind
post 14.07.2020, 09:39:38
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 21.12.2007
Skąd: Stalowa Wola

Ostrzeżenie: (0%)
-----


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ź.
Go to the top of the page
+Quote Post
nospor
post 14.07.2020, 10:00:07
Post #2





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Jdwind
post 14.07.2020, 10:10:41
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 21.12.2007
Skąd: Stalowa Wola

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post 14.07.2020, 10:12:02
Post #4





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




$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'";


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Jdwind
post 15.07.2020, 01:35:42
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 21.12.2007
Skąd: Stalowa Wola

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post 15.07.2020, 08:56:03
Post #6





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Mozesz dodac sume. A na przyszlosc mozesz tez sprawdzic zanim napiszesz wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Jdwind
post 15.07.2020, 21:33:54
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 21.12.2007
Skąd: Stalowa Wola

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 13:24