簡體   English   中英

加入和可能的子查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM