使用外键一次选择多个内容

时间:2014-03-19 23:19:53

标签: mysql sql

我的数据库有以下布局:

enter image description here

我正在尝试返回一个包含用户所在线程的大型对象,以及每个线程中的所有用户

thread_participants表是一个多对多表,用于跟踪哪些用户在哪些线程中。用户可以选择“加入”或“离开”线程 - 这不是论坛意义上的线索。

我已经设法获取用户所选的所有线程,但是执行反向查找并获取该线程中的所有用户超出了我的范围。到目前为止,我的代码(只选择给定user_id的线程)是:

SELECT id,title,creation_date FROM `threads`
WHERE id IN (SELECT thread_id FROM `thread_participants` WHERE user_id = ?)

1 个答案:

答案 0 :(得分:1)

使用thread_participants的第二个实例并将其加入threads,然后加入users表:

   SELECT t.id, t.title, t.creation_date, u.nickname, u.email
      FROM `threads` t
           JOIN `thread_participants` p
                ON t.id = p.thread_id
           JOIN `users` u
                ON p.user_id = u.id
     WHERE t.id IN (SELECT thread_id FROM `thread_participants` WHERE user_id = ?)