@Alk90
php, mysql, jquery, css, html, api

Как выбрать ID диалога и ID собеседника из одной таблицы?

Всем привет!
У меня есть таблица, которая содержит поля:
  • 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 будут выведены этим запросом.
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kova1ev
в голову лезет такой вариант:
SELECT dialog_id FROM members
GROUP BY dialog_id HAVING count(user_id) = 2
AND dialog_id IN (
    SELECT dialog_id 
    FROM members 
    WHERE user_id = 1 OR user_id = 2
    GROUP BY dialog_id HAVING count(user_id) = 2)

то есть выбираем все диалоги с двумя юзерами и проверяем какой из них есть в диалогах с нужными юзерами
Ответ написан
Ваш ответ на вопрос

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

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