В моем запросе ниже я не получаю желаемый результат. Я хочу, чтобы результаты сортировались в соответствии с последним событием события на основе двух разных полей даты в двух разных таблицах. Давайте сначала посмотрим на запрос.
SELECT R1.swp_to, R1.swp_type, R1.swp_date, M.mem_fname, M.mem_lname, M.mem_last_activity, DP.dp_photo, GREATEST(R1.swp_date, R2.swp_date) FROM swipes AS R1
LEFT JOIN swipes AS R2 ON(R1.swp_to = R2.swp_by AND R2.swp_to = R1.swp_by AND R2.swp_type <> 'left')
LEFT JOIN members AS M ON(R1.swp_to = M.mem_id)
LEFT JOIN display_photos AS DP ON(R1.swp_to = DP.dp_mem AND DP.dp_index = 1)
LEFT JOIN messages as MSG ON ((R1.swp_to = MSG.msg_from OR R1.swp_to = MSG.msg_to) AND (R1.swp_by = MSG.msg_from OR R1.swp_by = MSG.msg_to))
WHERE R1.swp_by = :mem AND R2.swp_by IS NOT NULL AND R1.swp_type <> 'left'
ORDER BY IF(MSG.msg_time IS NULL, 0, 1), R1.swp_date
Здесь в выражении ORDER BY
мы видим, что есть два поля TIME msg_time
и swp_date
. При каждом новом совпадении swp_date
обновлений и при появлении нового сообщения msg_time
обновлений. Записи, извлеченные с использованием этого запроса, должны быть отсортированы в соответствии с последним событием события (какая дата является самой ранней из двух). Мои текущие ORDER BY
заявления не соответствуют требованию. Что мне здесь не хватает?