Я хочу получить количество регистраций за период времени (скажем, за неделю), что не так сложно сделать, но мне было интересно, возможно ли в MySQL вернуть ноль в течение нескольких дней которые не имеют регистраций.
Пример:
ДАННЫЕ:
ID_Profile datCreate
1 2009-02-25 16:45:58
2 2009-02-25 16:45:58
3 2009-02-25 16:45:58
4 2009-02-26 10:23:39
5 2009-02-27 15:07:56
6 2009-03-05 11:57:30
SQL:
SELECT
DAY(datCreate) as RegistrationDate,
COUNT(ID_Profile) as NumberOfRegistrations
FROM tbl_profile
WHERE DATE(datCreate) > DATE_SUB(CURDATE(),INTERVAL 9 DAY)
GROUP BY RegistrationDate
ORDER BY datCreate ASC;
В этом случае результат будет:
RegistrationDate NumberOfRegistrations
25 3
26 1
27 1
5 1
Очевидно, мне не хватает пары дней между ними. В настоящее время я решаю эту проблему в своем php-коде, но мне было интересно, есть ли в MySQL какой-либо способ автоматически вернуть 0 для пропущенных дней / строк. Это будет желаемый результат:
RegistrationDate NumberOfRegistrations
25 3
26 1
27 1
28 0
1 0
2 0
3 0
4 0
5 1
Таким образом, мы можем использовать MySQL для решения любых проблем, связанных с количеством дней в месяце, вместо того, чтобы полагаться на код php для подсчета для каждого месяца, сколько дней существует, поскольку MySQL имеет встроенную функциональность.
Заранее спасибо