Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] - Count wraz z 0 ( zero )
Forum PHP.pl > Forum > Przedszkole
Mega_88
Cześć mam problem z funkcją Count(*), moim celem jest pobranie ilości rekordów dla poszczególnych dni z obecnego tygodnia. Moje zapytanie wygląda tak:

  1. SELECT COUNT(*) AS ile,
  2. sum(kwota) AS suma,
  3. DATE_FORMAT(DATA,'%y-%m-%d') AS y_m,
  4. DATA AS databaza
  5. FROM produkty WHERE
  6. WEEKOFYEAR(DATA) = WEEKOFYEAR(CURDATE()) AND YEAR(DATA) = YEAR(CURDATE())
  7. AND kategoria!=3 GROUP BY y_m


Zapytanie zwraca mi rekordy w których coś jest natomiast potrzebuje pobrać również te rekordy dla których wartości jest 0 żeby uzyskać coś w tym stylu:

Poniedziałek - 0
Wtorek - 0
Środa - 2
Czwartek - 1
...
Niedziela - 0

Kombinowałem już z IFNULL(COUNT(*), 0) + masa pomysłów z google jednak nic nie przynosi efektu.

Jak to rozwiązać lub czym zastąpić żeby uzyskać taki wynik jak podałem wyżej ?
YourFrog
COUNT(*) Jeżeli nie jest zapytany o konkretny element to nie odpowie ci o jego ilości.

Innymi słowy jak nie napiszesz czegoś takiego

  1. SELECT
  2. COUNT(*)
  3. FROM
  4. product
  5. JOIN product_attribute USING(product_id)
  6. WHERE
  7. product_id = 2
  8. GROUP BY
  9. product_id


To nie ma możliwości aby baza zwróciła ci wartość "0".


Według mnie rozwiązaniem twojego problemu będzie funkcja "WEEKDAY" w mysql. Ponieważ w zapytaniu możesz poprosić aby ci podała numer tygodnia dla którego zwraca ci dane. Np
  1.  
  2. $weekend = array();
  3. for($i = 0; $i < 7; $i++)
  4. $weekend[$i] = array();
  5.  
  6. $data = qeury('
  7. SELECT
  8. COUNT(*) AS c,
  9. sum(kwota) AS sum,
  10. DATE_FORMAT(DATA,'%y-%m-%d') AS y_m,
  11. WEEKDAY(DATA) AS day,
  12. DATA AS databaza
  13. FROM
  14. produkty WHERE
  15. WEEKOFYEAR(DATA) = WEEKOFYEAR(CURDATE()) AND YEAR(DATA) = YEAR(CURDATE()) AND
  16. kategoria != 3
  17. GROUP BY
  18. y_m'
  19. );
  20.  
  21.  
  22. foreach($data as $row)
  23. $weekend[$row['day']] = $row;
  24.  
  25. var_dump($weekend);


Oczywiście zakładamy że metoda query zwraca nam tablicę.
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.