我的数据库有以下布局:
我正在尝试返回一个包含用户所在线程的大型对象,以及每个线程中的所有用户。
thread_participants
表是一个多对多表,用于跟踪哪些用户在哪些线程中。用户可以选择“加入”或“离开”线程 - 这不是论坛意义上的线索。
我已经设法获取用户所选的所有线程,但是执行反向查找并获取该线程中的所有用户超出了我的范围。到目前为止,我的代码(只选择给定user_id的线程)是:
SELECT id,title,creation_date FROM `threads`
WHERE id IN (SELECT thread_id FROM `thread_participants` WHERE user_id = ?)
答案 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 = ?)