[英]joining and possible sub-queries
我有3個表: user
,'user_friends'和'blog_post'
架構類似於以下內容:
user
id | username
-------------------
1 | jim
-------------------
2 | mary
-------------------
3 | george
-------------------
4 | julie
user_friends
user_id | friend_id
----------------------
1 | 2
----------------------
2 | 3
----------------------
2 | 4
blog_posts
id | title | user_id
------------------------------
1 | test_1 | 1
------------------------------
2 | test_2 | 2
------------------------------
3 | test_3 | 3
------------------------------
4 | test_4 | 4
好的,所以你可以看到每個用戶都發了一篇博文。 用戶有'朋友'。 我要做的是,顯示每個用戶朋友的博客帖子。
所以,如果我想看看Jims朋友的帖子,它應該顯示mary的test_2帖子。 如果我想看mary的朋友帖子,它應該顯示george和julie的test_3和test_4的帖子
有這么簡單的方法嗎? 我可以使用子選擇嗎?
非常感謝
是的,您可以使用子選擇。 這樣的事情應該有效:
SELECT * FROM blog_posts WHERE user_id in
(SELECT friend_id FROM user_friend WHERE user_id=1)
可以這么簡單(帶JOIN的變體):
SELECT bp.*
FROM user_friends uf
JOIN blob_posts bp ON bp.user_id = uf.friend_id
WHERE uf.user_id = my_id
Select *
From blog_posts
Where user_id in
(Select friend_id
From user_friends
where user_id = 1);
最后的數字可以是您要查找的任何用戶ID。
你可以使用IN
SELECT * FROM blog_posts WHERE user_id IN (
SELECT friend_id FROM user_friends WHERE user_id = X)
SELECT bp.*
FROM blog_posts bp
INNER JOIN user_friends uf ON bp.user_id = uf.friend_id
INNER JOIN user u ON u.id = uf.user_id
WHERE u.username = "jim"
試試這個請求:
SELECT bp.title
FROM blog_posts bp
JOIN user_friends uf ON (bp.user_id = uf.friend_id)
WHERE uf.user_id = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.