mySQL - statystyki miesiąca

0

Witam,

Przechowuje w tabeli daty wszystkich logowań. Potrzebuję zrobić zapytanie które zwróci mi liczbę logowań w każdym dniu w danym miesiącu.
ale jeśli jakiegoś dnia użytkownik sie nie logował to wstawi 0. mam na razie takie zapytanie:

SELECT 
DAY(ul.date_login) AS dzien,
COUNT(*) AS ilosc
FROM users_login AS ul
WHERE ul.user_id = 1 AND MONTH(ul.date_login) = MONTH(NOW()) AND YEAR(ul.date_login) = YEAR(NOW())
GROUP BY dzien
ORDER BY dzien ASC;

To zapytanie zwraca takie coś:
dzien | ilosc
10 | 5
15 | 20
16 | 15

ale potrzebuję wszystkie dni w miesiącu czyli jak nie logował sie dnia 1 to wstawi 0 itd. Bardzo proszę o pomoc czy uzyskanie tego jest możliwe.

0

Coś w ten deseń...

SELECT u.user_id,
DAY(ul.date_login) AS dzien,
COUNT(ul.*) AS ilosc
FROM users u
left join users_login AS ul on (u.user_id = ul.user_id)
WHERE MONTH(ul.date_login) = MONTH(NOW()) AND YEAR(ul.date_login) = YEAR(NOW())
GROUP BY u.user_id, dzien
ORDER BY u.user_id, dzien ASC;

Wychodzisz od tabeli użytkowników, łączysz ją z tabelą logowań i grupujesz.

0
wloochacz napisał(a):

Coś w ten deseń...

SELECT u.user_id,
DAY(ul.date_login) AS dzien,
COUNT(ul.*) AS ilosc
FROM users u
left join users_login AS ul on (u.user_id = ul.user_id)
WHERE MONTH(ul.date_login) = MONTH(NOW()) AND YEAR(ul.date_login) = YEAR(NOW())
GROUP BY u.user_id, dzien
ORDER BY u.user_id, dzien ASC;

Wychodzisz od tabeli użytkowników, łączysz ją z tabelą logowań i grupujesz.

Nie otrzymam takiego czegoś dane na lipiec:
dzien | ilosc
1 | 0 - //nie logował się 1 lipca
2 | 5
3 | 0 - //nie logował się
4 | 0 - //nie logował się
5 | 10
6 | 20
....

potrzebuję tych danych do wykresu na dany miesiąc i chyba będę musiał zmodyfikować dany w PHP że jak nie pobrał danych np. z 1 dnia to ma wstawić 0

0

Wychodzisz od tabeli dni. Jeśli jej nie masz to ją zrób (fizycznie, bądź zapytaniem). Potem połącz LEFTEM z tym co powyżej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1