У меня есть 2 таблицы:LEFT JOIN не показывает NULL результаты
- DAY_INTERVALS (interval_start)
- ЗАКАЗЫ (client_id, order_time, order_total_price)
Я хочу, чтобы отобразить все дни в DAY_INTERVAL таблицы против таблицы ORDERS. Ниже приведен SQL, который я использую.
SELECT DATE_FORMAT(order_time,'%Y-%m-%d') as dates, COALESCE(SUM(order_total_price), 0) AS sales
FROM time_intervals ti
LEFT JOIN orders o
ON DATE(o.order_time) = ti.interval_start AND (o.client_id = 157 or o.client_id is NULL)
GROUP BY DAY(o.order_time)
Он не отображает результаты NULL дней, которых нет в таблице заказов. Запрос должен отображать все дни, независимо от того, находится ли он в таблице заказов.
Я рассмотрел похожие вопросы, но запрос выше - это то, что я придумал, основываясь на других решениях.
Любые советы были бы высоко оценены.
Удалить группу по (и сумме) и посмотреть, получаете ли вы ожидаемый результат – kjana83
Создайте подзапрос для своего выбора, а затем группу –
Это была группа, вызвавшая проблему. ВЫБОР interval_start, СОАЬЕЗС (СУММА (order_total_price), 0), как продажи ИЗ time_intervals ти LEFT JOIN заказов О О DATE (o.order_time) = ti.interval_start И ( o.client_id = 157 ИЛИ o.client_id IS NULL ) GROUP BY ДНЯ (interval_start) Это работало –