MySQL 5.x
Предусловие: есть таблица с, например, временем, залогированным пользователями.
Нас интересуют 2 поля - дата и время.
Задача: Необходимо выбрать сумму залогированного времени с группировкой по дням.
В общем, задача решается запросом ниже, но если за какой-то день не было записей, то эта строчка будет пропущена.
Хочется все равно иметь там 0 и дату.
Условие: писать в таблицы нельзя, создавать таблицы нельзя. Права только на чтение.
SELECT format((ifnull(SUM(wl.timeworked), 0) div 60)/60, 2) daylogged, DATE(wl.updated) ldate
FROM worklog wl
WHERE wl.author='username' AND wl.updated BETWEEN '2010-08-21 00:00:00' AND '2010-08-25 23:59:59'
GROUP BY DATE(wl.updated)
Можно сделать, конечно, несколько запросов и вычислять пропущенные даты на клиенте, но это не так красиво. Кто может подсказать?
Понятие 'calendar tables' как оно показано
тут, скорее всего, не подойдет, поскольку нельзя гарантировать, что даже в других таблицах есть диапазон индексов идущих подряд (чтоб использовать для фейковой таблицы и группировки по ним).