Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Jedno zapytanie czy dwa?
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Siema. Chcę wyświetlić z bazy wszystkie rekordy, wiadomo - w while, oraz jedną wartość - ilość rekordów gdzie paid=1.
Da się tak zrobić w jednym zapytaniu? Chyba nie, co?
trueblue
Jest taki modyfikator:
  1. SELECT SQL_CALC_FOUND_ROWS * FROM tablea WHERE ...;

ale jest on "depracated". O ile pamiętam nie zwracał chyba dokładnych wyników (może się mylę).

Skoro jednak pobierasz wszystkie rekordy, to przecież w PHP możesz obliczyć ile ich jest. Chyba, że robisz stronicowanie.
Salvation
Możesz zrobić zwykły COUNT(...)
I tak, lepiej to dociągnąć dwoma osobnymi zapytaniami.
Malinaa
W takiej sytuacji - gdy chcesz pobrać wszystkie rekordy z tabeli i policzyć tylko te, gdzie paid = 1, to da się to zrobić w jednym zapytaniu, bez SQL_CALC_FOUND_ROWS i bez osobnych zapytań, przy użyciu agregatu okna (window function).

  1. SELECT
  2. t.*,
  3. COUNT(CASE WHEN t.paid = 1 THEN 1 END) OVER () AS paid_count
  4. FROM
  5. tablea t;


Można w jednym zapytaniu, najlepiej z COUNT(...) OVER ().
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.