簡體   English   中英

如何在SQL中正確連接這四個表?

[英]How to properly join these four tables in SQL?

我目前正在創建一個小應用程序,用戶可以在其中訂閱不同的頻道以查看相應的帖子。

我的數據庫看起來像這樣(簡化): 在此處輸入圖片說明

現在,我正在嘗試從帖子表(所有列)中獲取所有信息,這些信息針對與特定用戶可能訂閱的任何頻道相關的所有帖子。

示例:用戶 (id_user = 0) 訂閱了三個頻道(id_channel = 1、2 和 3),現在想要查看這些頻道中的所有帖子(每個帖子的 fk_channel = 1 或 2 或 3)。

我使用不同的連接嘗試了許多變體,但是我無法找到正確的查詢。 我最后一次嘗試看起來像這樣(這不起作用......):

SELECT * FROM posts
INNER JOIN channels ON posts.fk_channel = channels.id_channel
INNER JOIN subscriptions ON channels.id_channel = subscriptions.fk_subcribed_channel
INNER JOIN users ON subscriptions.fk_subscibed_by = users.id_user

如果您有用戶的 id,則無需加入表users ,因為您可以使用subscriptions fk_subscibed_by列:

SELECT p.* 
FROM subscriptions s
INNER JOIN channels c ON c.id_channel = s.fk_subcribed_channel
INNER JOIN posts p ON p.fk_channel = c.id_channel
WHERE s.fk_subscibed_by = 0

如果要獲取連接表的所有列,請使用SELECT *而不是SELECT p.* ,后者僅返回來自posts的列。

如果您的 rappresentation 是正確的,這應該可以正常工作:

SELECT * FROM posts
LEFT OUTER JOIN channel ON posts.fk_channel = channel.id_channel
LEFT OUTER subscriptions ON channel.id_channel = subscriptions.fk_subcribed_channel
LEFT OUTER users ON subscriptions.fk_subscibed_by = users.id_user

像這樣,您應該能夠從用戶訂閱的每個頻道中獲取每個帖子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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