Мне нужна настоящая профессиональная помощь DBA! Я не могу найти разумного решения, используя LEFT JOIN, UNION, UNION ALL или IFNULL (salesblah, 0) в таблице дат относительно таблицы данных о продажах. Выполнение запросов по данным о продажах в одиночку отсутствует, поскольку у торгового представителя могут быть пробелы. Конечно, я мог бы создать в PHP массив для суммирования данных по дате, но должно быть элегантное решение, которого я не вижу, и этот личный вызов утомил меня. Для этого должно быть короткое и приятное решение.
С MySQL 5.5.15 на сервере отрывок данных о продажах (в настоящее время 800 000 строк и растет ежедневно) выглядит так:
Rep Date QtyOrdered PriceEach
--------------------------------------------------
1 2011-06-05 4 1457.23
1 2011-08-01 1 3342.54
1 2011-08-11 12 112.23
2 2011-05-02 3 2654.23
2 2011-08-23 22 423.43
. ... ... ...
Другая таблица - это просто столбец дат с 2000-01-01 по 2034-12-31
Используя (или не используя) таблицу дат, когда я вызываю респ 1 в запросе, как я могу получить этот результат:
YYYY-MM Total Sales
------------------------
2010-08 0
2010-09 0
2010-10 0
2010-11 0
2010-12 0
2011-01 0
2011-02 0
2011-03 0
2011-04 0
2011-05 0
2011-06 5828.92
2011-07 0
2011-08 4960.14
Я действительно надеюсь убрать неиссякаемую книгу невежливых слов. Спасибо за ваш талант.
РЕДАКТИРОВАТЬ: Решение левого соединения от Дерека пропускает ненулевые месяцы. Метод подзапроса Nerf суммирует все в один месяц. Я считаю, что это GROUP BY, которая убивает ненулевые месяцы.
Спасибо! Я считаю, что самый простой способ - заставить PHP запускать результаты через массив. В конечном счете, это заключается в том, чтобы построить диаграмму для ряда месяцев через GD, и гибридное решение может сэкономить шаг в этой части.
Еще раз спасибо!