-1

我有两张桌子:

|  conversations  |      |    conversation_participants   |
-------------------      ----------------------------------
| id | project_id |      | id | conversation_id | user_id |
-------------------      ----------------------------------
  1  | 1                   1  | 1               | 1
  2  | 1                   2  | 1               | 2
                           3  | 2               | 1
                           4  | 2               | 3 

我需要为特定项目 ID 选择两个用户共有的对话 ID

所以在这个例子中:

  • user_id 1 和 user_id 2 对于 project_id 1 的共同对话 id 是:1
  • user_id 1 和 user_id 3 对于 project_id 1 的共同对话 id 是:2

我需要一个查询,我可以在其中提供 user_id a、user_id b 和 project_id 并获得对话 id 作为回报。

我尝试了类似的东西:

SELECT
c.id
FROM conversations c
JOIN conversation_participants p ON p.conversation_id = c.id
WHERE (p.user_id = ? AND c.project_id = ?)
OR (p.user_id = ? AND c.project_id = ?)

但是当然这会返回多行并且它可能是错误的,因为在某些情况下它会返回具有不同对话 id 的记录......

帮助表示赞赏!谢谢!。

4

1 回答 1

1

尝试这个

   SELECT
    c.id
   FROM conversations c
   JOIN conversation_participants p ON p.conversation_id = c.id
   JOIN conversation_participants p2 ON p2.conversation_id = p.conversation_id
   WHERE  c.project_id = ?
   AND p.user_id = ? and p2.user_id = ?

你可以给:

p.user_id = 1   --as user1
p2.user_id = 2  --as user2
c.project_id = 1 

在这里演示

于 2013-07-24T18:12:09.597 回答