@artmirarmi

Как узнать есть ли диалог между двумя пользователями?

Здравствуйте. У меня есть две таблицы:
dialogs - id | created_at
dialogs_users - id | userID | dialogID

Таблица dialogs - это таблица со всеми диалогами, а в таблицу dialogs_users добавляются все участники диалога.

Как можно узнать есть ли диалог ТОЛЬКО между двумя пользователями и чтобы больше никто в этот диалог не входил?
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
VladimirAndreev
@VladimirAndreev
php web dev
Select * from(Select count(*) as _cnt, dialog_id from dialog_users where user_id in(1,2) Group by dialog_id) a where a._cnt = 2.

P.s. Разумеется, я знаю про having во внутреннем запросе и ненужность внешнего)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
select * 
from dialog_users as d1
where 
  user_id = 1 -- первый юзер
  and 
  (select dialog_id 
    from dialog_users as d2 
     where d2.user_id = 2 -- второй юзер
     and d2.dialog_id = d1.dialog_id)
  and 
  (select count(*) 
    from dialog_users as d3 
     where d3.dialog_id = d1.dialog_id) = 2 -- количество человек в диалоге


как-то так может быть
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы