Вы должны быть в состоянии сделать это, выполнив что-то вроде этого:
Таблица
drop table if exists table1;
create table table1 (jobid int, jobname char(10));
insert into table1 values (1, 'job a'), (2, 'job b');
drop table if exists table2;
create table table2 (
id int,
jobid int,
statusid int,
statusdate timestamp,
`desc` char(10)
);
insert into table2 values
(1,1,100,'2019.04.25 10:00:00','first')
,(2,2,100,'2019.04.25 11:00:00','first')
,(3,2,100,'2019.04.25 12:00:00','second');
Запрос
select
t1.*,
t2.*
from table1 t1
inner join (
select jobid, max(statusdate) as maxstatusdate
from table2
group by jobid
) tn on t1.jobid = tn.jobid
inner join table2 t2 on tn.jobid = t2.jobid and tn.maxstatusdate = t2.statusdate;
* Результаты 1014 ** * 1015
jobid jobname id jobid statusid statusdate desc
1 job a 1 1 100 25.04.2019 10:00:00 first
2 job b 3 2 100 25.04.2019 12:00:00 second
Объяснение
- Для каждого идентификатора задания найдите максимальную дату статуса
- Присоедините это к таблице1, чтобы получить информацию из таблицы1. Общее поле - jobid
- Присоедините их результат к таблице 2, в которой есть вся остальная информация, которую вы хотите. Общие поля - это jobid и statusdate. Поскольку мы присвоили максимальную дату статуса другому имени, убедитесь, что мы используем правильное имя в соединении
Пример: https://rextester.com/HRSWZ89705