MYSQL: агрегирование заказов по диапазону дат с нулевыми значениями для подсчета - PullRequest
0 голосов
/ 17 ноября 2011

Я пытаюсь отобразить сумму заказов, поступивших на определенную дату за последние 7 дней, но у меня возникла проблема, когда их нет на определенную дату, поскольку запрос не является ни значением, ни датой, и поэтому возвращая массив меньше 7.

SELECT IFNULL(COUNT(*),0) as purchase_count, DATE(tb_order.order_date) as order_date
                FROM tb_order_attendee_info
                JOIN tb_order on tb_order.order_id = tb_order_attendee_info.order_id
                JOIN tb_events on tb_events.event_id = tb_order.event_id
                 WHERE tb_order_attendee_info.refunded='N'  AND order_date between DATE_SUB(now(), interval 10 day) and now()
                GROUP BY DATE(tb_order.order_date)"; 

Я пытался выяснить, как заставить его вернуть массив с нулевыми значениями для количества покупок и увеличенной даты, к сожалению, он возвращает только дату, когда число больше 0.

1 Ответ

1 голос
/ 17 ноября 2011

Вы пытаетесь ввести строки результатов там, где их нет в данных. Это просто невозможно (без использования хранимой процедуры ). Вы не можете перебирать даты, так как, скажем, в SQL нет циклов for.

Самое близкое, что вы можете получить - это иметь / создать (временную) таблицу всех дат, которые вы хотите получить в результате, а затем присоединиться к этой таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...