У меня следующий запрос:
SELECT t1.id,
t1.collection_date,
t2.last_order_date,
t2.hasOrders
FROM job_details AS t1
LEFT JOIN
(
SELECT job_id,
MAX(date) AS last_order_date,
(CASE COALESCE(MAX(date), '0000-01-01') WHEN '0000-01-01' THEN 'false' ELSE 'true' END) AS hasOrders
FROM sales_orders
GROUP BY job_id
)
AS t2
ON t2.job_id = t1.id
Я ожидаю, что t2.hasOrders
будет true
или false
после CASE
части LEFT JOIN
, но я продолжаю получать либоtrue
или NULL
, как показано здесь
Я знаю, что t2.date
всегда будет возвращать действительную дату или значение столбца по умолчанию 0000-00-00
.
Это упрощенная версия моего запроса, поскольку таблица, которую запрашивает LEFT JOIN
, является временной таблицей.
Почему значения NULL
для t2.date
не возвращают ожидаемый результат?
Заранее спасибо.
РЕДАКТИРОВАТЬ 1
ССЫЛКА НА ДЕМОНСТАЦИЮ - удалено where
часть запроса
РЕДАКТИРОВАТЬ 2
Ожидаемый результат:
id collection_date last_order_date hasOrders
1001 2019-02-07 2019-02-01 true
1002 2019-02-09 0000-01-01 false
Фактический результат:
id collection_date last_order_date hasOrders
1001 2019-02-07 2019-02-01 true
1002 2019-02-09 NULL NULL
Изменить 3
Обновлен вышеуказанный запрос для включения group by
в left join
части запроса и изменили 0000-00-00
на 0000-01-01
, как предложено.Все еще не работает, как ожидалось.