dklight
@dklight
php кодер - level 2.5

Как выполнить обновление поля последней датой по связанным таблицам?

Есть таблица 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;


А как сделать расширить решение, чтобы для всех записей таблица работало?
  • Вопрос задан
  • 17 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы