@Davidaa_WoW

Как составить SQL запрос на выборку пользователей одного чата?

Есть три таблицы:
create table users (
  id int primary key auto_increment, 
  name varchar(255) unique
);
create table chats (
  id int primary key auto_increment
);
create table chat_user (
  id int primary key auto_increment, 
  user_id int, 
  chat_id int, 
  foreign key (user_id) references users(id), 
  foreign key (chat_id) references chats(id));


Пользователи, чаты и промежуточная таблица между ними. Мне нужно сделать выборку пользователей одного чата. На вход поступает id обоих пользователей. Пока получилось сделать следующую выборку на получение всех чатов обоих пользователей:
select * 
from chat 
join chat_user 
on chat.id=chat_user.chat_id 
where chat_user.user_id in (sender, receiver)


Не могу понять, как выбрать пользователей с общим чатом. При этом id чата естественно неизвестен, он может либо существовать, либо нет.
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
select ch1.chat_id
from chat_user ch1
join chat_user ch2 using (chat_id)
where ch1.user_id = 1 and ch2.user_id = 2;

https://sqlize.online/sql/mysql57/de07594355bfc82c...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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