gikami
@gikami
web программист

Как вывести беседу, с проверкой на ее приватность в другой таблице (2 таблицы)?

Есть таблица бесед и пользователей, и есть соединительная таблица между этими двумя таблицами. В таблице бесед указана, приватная беседа это или нет

Есть таблица бесед и пользователей, и есть соединительная таблица между этими двумя таблицами. В таблице бесед указана, приватная беседа это или нет. В соединительной таблице содержатся пользователи, которые находятся в той или иной беседе. Проблема в том, что нужно получить приватную беседу между двумя пользователями, но статус беседы как приватная, находится в другой таблице.
Пример наработок:
SELECT "usersConversations".conversation_id FROM "usersConversations", "conversations"
        WHERE "usersConversations".user_id IN (1, 2)
        AND "conversations".id = "usersConversations".conversation_id
        AND "conversations"."isPrivate" = true 
  GROUP BY "usersConversations".conversation_id LIMIT 1;

62b9871d5c03a012999741.jpeg
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
SELECT "conversations".id 
FROM  "conversations"
JOIN "usersConversations" "uC1" ON "conversations".id = "uC1".conversation_id AND "uC1".user_id = 1
JOIN "usersConversations" "uC2" ON "conversations".id = "uC2".conversation_id AND "uC2".user_id = 2
WHERE  "conversations"."isPrivate" = true 
ORDER BY "conversations".id DESC 
LIMIT 1;


SELECT "conversations".id 
FROM  "conversations"
WHERE  "conversations"."isPrivate" = true
AND EXISTS (SELECT 1 FROM  "usersConversations" WHERE "conversations".id = "usersConversations".conversation_id AND "usersConversations".user_id = 1) 
AND EXISTS (SELECT 1 FROM  "usersConversations" WHERE "conversations".id = "usersConversations".conversation_id AND "usersConversations".user_id = 2) 
ORDER BY "conversations".id DESC 
LIMIT 1;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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