Выберите строку с максимальной датой между двумя таблицами - PullRequest
0 голосов
/ 23 января 2019

У меня есть две таблицы с похожими полями:

таблица 1:

id  contact_id |fit_date    | model
---|-----------|------------|---------
1  | 10        | 04/03/2009 |Platinum   
2  | 10        | 12/01/2010 |Platinum
5  | 12        | 10/03/2019 |Gold 

таблица 2:

id  contact_id |fit_date    | model
---|-----------|------------|---------
1  | 10        | 06/14/2018 |Platinum   
2  | 10        | 07/25/2016 |Platinum
5  | 12        | 01/28/2008 |Gold  

Мне нужно как-то вернуть строкуиз объединенных таблиц, у которых наивысшая дата fit_date, где contact_id = '10', например.

Мне нужно что-то вроде этого:

id  contact_id |fit_date    | model
---|-----------|------------|---------
1  | 10        | 06/14/2018 |Platinum   

Затем позже, когда я запрашиваю WHERE contact_id = 12 Iпонадобится это:

id  contact_id |fit_date    | model
---|-----------|------------|---------
1  | 12        | 10/03/2018 |Gold

Я полностью потерян в этом запросе и не знаю, с чего начать.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Это то, что вы хотите?

select t1.*
from table1 t1
where t1.contact_id = 10
union all
select t2.*
from table2 t2
where t2.contact_id = 10
order by fit_date desc
limit 1;

Если у вас есть индекс для contact_id, fit_date в каждой таблице, то это может быть более эффективным:

(select t1.*
 from table1 t1
 where t1.contact_id = 10
 order by fit_date desc
 limit 1
) union all
(select t2.*
 from table2 t2
 where t2.contact_id = 10
 order by fit_date desc
 limit 1
)
order by fit_date desc
limit 1;
0 голосов
/ 23 января 2019

кажется, вам нужен максимум для объединенных таблиц

select   max(fit_date), model , contact_id
from  (
  select id , contact_id ,fit_date,model
  from table1 
  union 
  select id , contact_id ,fit_date,model
  from table2
) t 
group by  model , contact_id 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...