xXRustamXx
@xXRustamXx

Можно ли это сделать в postgresql?

Таблицы:
5f3055602c951191163070.png
Найти 2 пользователей по id, которые в одном персональном диалоге, как сделать? Детально: пользователи id=1, id=2, у них одинаковый dialogId, а у диалога type='personal'.
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
xXRustamXx
@xXRustamXx Автор вопроса
SELECT dialogs_users.* FROM dialogs_users
LEFT JOIN dialogs ON dialogs.id = dialogs_users."dialogId"
WHERE 
    dialogs.type = 'personal' 
    AND 
    dialogs_users."userId" IN ('69e56a68-edbd-4f8b-8ccd-cb8031c5c865', '06b475b7-8f12-4879-bea4-e8f22ef85a46') 
    AND
    dialogs_users."dialogId" IN (SELECT dialogs_users."dialogId" dialogId FROM dialogs_users GROUP BY dialogId HAVING COUNT(*) > 1);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Если я правильно понял, то
SELECT 
  du.userId 
FROM 
  dialogs_users du 
  INNER JOIN dialogs d 
    ON du.dialogId = d.id 
WHERE 
  d.type = 'personal' AND du.dialogId = $dialogId

Ну и советую ещё раз перечитать какую-нибудь книгу из разряда "SQL для чайников"
Ответ написан
Ваш ответ на вопрос

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

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