Есть три таблицы:
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 чата естественно неизвестен, он может либо существовать, либо нет.