2014-01-31 5 views
1

У меня есть две таблицы вызовов и задач. Я хочу получить самую далекую дату, которая когда-либо была из обеих таблиц. Результатом будет одна дата, которая является максимальной для всех.Mysql UNION Tables MAX date

Так в основном хотят, чтобы присоединиться к дести ниже

ВЫБРАТЬ id, MAX (date_due) FROM задач WHERE parent_id = '35' И date_due> CURDATE()

ВЫБРАТЬ id, MAX (date_start) FROM calls WHERE parent_id = '35' AND date_start> CURDATE()

Это приведет к максимальной дате из каждой таблицы, но как мне получить единую запись, которая является самой высокой датой.

ответ

2

Если вы хотите, наибольшее значение из MAX(date_due) и MAX(date_start)

добавить псевдоним для вашей функции MAX

использовать UNION между вашими двумя запросами

использовать что UNIONed запрос в качестве подзапроса.

select id, MAX(mx) FROM 

(SELECT id, MAX(date_due) as mx FROM tasks WHERE parent_id = '35' AND date_due > CURDATE() 
UNION 
SELECT id, MAX(date_start) as mx FROM calls WHERE parent_id = '35' AND date_start > CURDATE()) s 
+0

Пожалуйста, обратите внимание, что окончательная «s» это не опечатка, но это псевдоним подзапроса, который необходим, чтобы избежать ошибок в MySQL 'Каждый производная таблица должна иметь свой собственный alias'. Если вы хотите получить более читаемый запрос, замените 'CURDATE()) s' на' CURDATE()) AS subquery' – lucaferrario