Запрос на сравнение пар SQL
Ребята, пытаюсь составить СКУЛ запрос между двумя таблицами. Суть в чем, есть таблица dialogs в ней есть графа id диалога и две графы user_1 и user_2
есть таблица messages в которой есть графы dialog_id sender_id и receiver_id
мне нужно получить запросом список id-шек диалогов (1-ая таблица) между юзерами у которых НЕТУ еще сообщений. то есть user_1 и user_2 (допустим 22 и 144) парой не присутсвуют в таблице messages как sender_id и receiver_id то что у кого то из них с другими юезрами есть диалоги и сообщения - это понятно это мы не трогаем. задача выявить "пустые" диалоги в таблице dialogs
Запрос должен учитывать что user_1 и user_2 из таблицы dialogs в таблице messages могут быть как sender так и receiver, жесткой привязки нет между ними.
Ответы (1 шт):
SELECT d.id
FROM dialogs d
LEFT JOIN messages m ON LEAST(d.user_1, d.user_2) = LEAST(m.sender_id, m.receiver_id)
AND GREATEST(d.user_1, d.user_2) = GREATEST(m.sender_id, m.receiver_id)
WHERE m.dialog_id IS NULL
либо
...
LEFT JOIN messages m ON (d.user_1, d.user_2) IN ((m.sender_id, m.receiver_id),
(m.receiver_id, m.sender_id))
...
Или то же самое, но в виде WHERE NOT EXISTS.

