我似乎在努力把握在一个ID上加入3个表的概念。
用户表
|id |
|:----:|
|1 |
|2 |
POST表
|id |userid | content|
|:----:|:----:|:----:|
|1 |1 |HELLO |
|2 |1 |THERE |
|3 |2 |WORLD |
朋友表
|id | userid | friendid |
|:----:|:------:|:--------:|
| 1 | 1 | 2 |
我想提供USER表中的ID,并从POSTS获取所有内容,其中POST.USERID是FRIEND.USERID和FRIEND.FRIENDID 所以USER.ID =' 1'将带回所有POST.CONTENT(在这种情况下)。
真的希望你能帮忙,几个小时一直在烦我。
答案 0 :(得分:0)
根据您的描述,您不需要加入用户表,您可以直接使用friends表,因为您拥有userid。但这应该会给你所有来自用户ID 5及其那些朋友的帖子。
SELECT post.*
FROM post
INNER JOIN friends ON post.userid = friends.userid OR post.userid = friends.friendid
WHERE friends.userid =1
要查询重复项,请使用以下命令:
SELECT post.*, users.firstname
FROM post
INNER JOIN users ON users.userid = post.userid
WHERE post.userid = 1
UNION
SELECT post.*, users.firstname
FROM friends
INNER JOIN post ON friends.friendid = post.userid
INNER JOIN users ON users.userid = friends.friendid
WHERE friends.userid = 1