Есть таблица emps, для каждой из них берутся id, по нему получается ch_id, neg_id и ищется самая свежая дата.
Исходя из них из 8 связанных таблиц берется самая свежая дата и присваивается полю last_event_date этой же записи.
Решение для фиксированной записи
set @emp_id = 287918153;
SELECT
@emp_ch_id := ch_id,
@emp_neg_id := neg_id
FROM
emps WHERE id = @emp_id;
SELECT @emp_latest_date := MAX(latest.created_at) as max_last_event_date
FROM (
SELECT created_at FROM emp_cms WHERE employee_id = @emp_id
UNION ALL SELECT created_at FROM emp_ems WHERE employee_id = @emp_id
UNION ALL SELECT created_at FROM emp_fls WHERE employee_id = @emp_id
UNION ALL SELECT created_at FROM hiss WHERE subject_id = @emp_id AND s_type = "ApMoEmp" AND field = "emp_f_id"
UNION ALL SELECT created_at FROM hms WHERE ch_id = @emp_neg_id
UNION ALL SELECT created_at FROM rms WHERE ch_id = @emp_neg_id
UNION ALL SELECT created_at FROM zms WHERE ch_id = @emp_neg_id
UNION ALL SELECT created_at FROM ams WHERE ch_id = @emp_ch_id
)
AS latest;
update emps
set emps.last_event_date = @emp_latest_date
where emps.id = @emp_id;
А как сделать расширить решение, чтобы для всех записей таблица работало?