Есть такой запрос:
SELECT DATE_FORMAT(`orders`.`date`, '%d.%m.%Y') as date, SUM((`orders_items`.`price`)*(`orders_items`.`count`)) AS `money` FROM `orders_items`
LEFT JOIN `orders_groups` ON `orders_items`.`order_group_id` = `orders_groups`.`id`
LEFT JOIN `orders` ON `orders_groups`.`order_id` = `orders`.`id`
LEFT JOIN `goods` ON `goods`.`id` = `orders_items`.`good_id`
LEFT JOIN `users` ON `orders`.`user_id` = `users`.`id`
LEFT JOIN `orders_status` ON `orders_status`.`id` = `orders_items`.`status_id`
WHERE date(`orders`.`date`)
BETWEEN '2016-08-02' AND '2016-08-15'
GROUP BY DATE_FORMAT(`orders`.`date`, '%d.%m.%Y')
ORDER BY `orders`.`date` DESC
Результат получается такой:
Как можно заметить, между датами 11.08.2016 и 15.08.2016 не хватает 4 дня. То есть, в эти дни не было записей (0 строк). Собственно вопрос, как выводить все даты в указанном в BETWEEN промежутке, даже если строк нету (12.08.2016 – 0, 13.08.2016 – 0...)?