У меня есть этот запрос для подсчета «просмотров» в таблице по дате. Очевидно, это дает мне только даты, когда была активность, но я бы хотел, чтобы MySQL возвращал данные за выбранный период времени. Например, 30 строк в течение 30-дневного периода, создавая нулевые данные для дат, в которых нет соответствующих строк.MYSQL: подсчет записей в таблице «событие», группировка по дате и количеству строк - на период даты
Я хочу избежать использования PHP, чтобы понять это, поэтому я подумал, что попрошу здесь дать совет о том, как, возможно, выполнить это с помощью интеллектуального запроса.
QUERY:
SELECT count(ID) AS views, date AS view_date
FROM logging.views
WHERE date < DATE_SUB(NOW(),INTERVAL 30 DAY)
GROUP BY DAY(date)";
Пример ниже только дает мне 7 строк, очевидно, потому что есть только запись, соответствующая 7 разных дней в промежутке выбран 30 дня. Я хотел бы получить 30 строк, представляющих все дни в заданном интервале.
ВЫВОД:
Array
(
[0] => Array
(
[date] => 2010-09-01 22:04:19
[views] => 20
)
[1] => Array
(
[date] => 2010-08-13 00:15:54
[views] => 4
)
[2] => Array
(
[date] => 2010-08-24 17:46:53
[views] => 2
)
[3] => Array
(
[date] => 2010-08-25 07:18:11
[views] => 35
)
[4] => Array
(
[date] => 2010-08-26 08:02:47
[views] => 12
)
[5] => Array
(
[date] => 2010-08-27 09:56:05
[views] => 29
)
[6] => Array
(
[date] => 2010-08-28 12:46:17
[views] => 30
)
)
Большой совет. Но что, если бы я хотел запросить час или минуту? Я полагаю, что таблица non-temp была бы большой для 36525 * 60 * 60 строк? – dropson