Нужен совет экспертов. В общем есть две таблицы
t1:
id, call
t2:
id, call_id, call_date, call_record_date
call_date
может быть как несколько для одного call_id
, так и ни одного.
Пытаюсь выбрать для каждого id
из table1
только те записи из table2
, где одновременно и call_date
, и call_record_date
максимальные.
Только для call_date
мне все понятно
SELECT t1.id, t2.call_date, t2.call_record_date
FROM t1
LEFT JOIN t2 ON t1.id = t2.call_id
WHERE t2.call_id IS NULL OR t2.call_date = (SELECT MAX(t2.call_date) FROM t2 WHERE t2.call_id = t1.id)
Как сюда оптимально присобачить MAX(t2.call_record_date)
, чтобы сначала подбирал по максимальной call_date
, а потом из полученных еще и выбирал максимальную call_record_date
? Если что все даты в формате YYYY-MM-DD
.
Такой запрос вроде все правильно возвращает, но меня не покидает ощущение, что как-то оно не правильно
SELECT t1.id, t2.call_date, t2.call_record_date
FROM t1
LEFT JOIN t2 ON t1.id = t2.call_id
WHERE t2.call_id IS NULL
OR (t2.call_date = (SELECT MAX(t2.call_date) FROM t2 WHERE t2.call_id = t1.id)
AND t2.call_record_date = (SELECT MAX(t2.call_record_date) FROM t2 WHERE t2.call_id = t1.id))