Всем привет!
У меня есть таблица, которая содержит поля:
- dialog_id - ID диалога в котором участвует пользователь
- user_id - ID пользователя
В диалоге может участвовать как 2, так и 3+ пользователей. И вот например отправляя сообщение пользователю, мне предварительно нужно узнать в какой диалог отправлять ему сообщение (ну т.е. какой ID диалога в котором мы с ним переписывались до этого).
Получается, что я должен выбрать записи, в которых user_id = 1 или user_id = 2, при этом у этих записей общий dialog_id и при этом количество собеседников в диалоге не должно превышать 2.
Я все время прихожу к одному запросу:
SELECT dialog_id
FROM members
WHERE user_id = 1 OR user_id = 2
GROUP BY dialog_id HAVING count(dialog_id) = 2
По по логике этот запрос работал бы. Но Having тут бесполезен, так как мы указали в условии конкретные ID пользователей. Поэтому если эти пользователи будут присутствовать в других, общих, диалогах, то и их ID будут выведены этим запросом.