Join
SQL Join/聯合問題例如__我___b和G一世n和rbeginer
我有兩個表,如下所示,包含以下列:
$$ table #Completed $$ Client_ID、ClientName、FirstDeliveryStatus、FirstDeliveryDate $$ table #Planned $$ Client_ID、ClientName、NextDeliveryStatus、NextDeliveryDate
如您所見,客戶有一些已完成和計劃的傳遞。我正在嘗試合併兩個表以顯示每個患者:
Client_ID、ClientName、FirstDeliveryStatus、FirstDeliveryDate、NextDeliveryStatus、NextDeliveryDate
我試圖從表 Completed 和外部/內部連接表 Planned 中選擇數據,但它對我不起作用。主要問題是第 6 行
$$ Ashton $$誰從來沒有完成過傳遞,一旦我加入了有關他計劃傳遞的詳細資訊-我在 Client_ID 和 ClientName 上得到空值 我希望看到如下視覺化的輸出
任何幫助,將不勝感激
您必須首先決定:我要返回哪個表的所有記錄?
你的答案聽起來像“客戶”。所以從你的客戶表開始:
SELECT ClientID, ClientName FROM Client
然後問:我要添加哪些表?
您的答案聽起來像“已完成”和“已計劃”。因此,將它們加入客戶:
SELECT c.ClientID, c.ClientName FROM Client AS c JOIN Completed AS comp ON c.ClientID = comp.ClientID JOIN Planned AS p ON c.ClientID = p.ClientID
現在問:我是想返回我的客戶表中的所有欄位,還是只返回兩個表中都有匹配記錄的欄位?
您的答案似乎是:“來自客戶端的所有記錄以及來自其他表的任何匹配”。因此,為此,從您的基礎外部連接到表並返回您想要的列:
SELECT c.ClientID, c.ClientName, comp.FirstDeliveryStatus, comp.FirstDeliveryDate, p.NextDeliveryStatus, p.NextDeliveryDate FROM Client AS c LEFT OUTER JOIN Completed AS comp ON c.ClientID = comp.ClientID LEFT OUTER JOIN Planned AS p ON c.ClientID = p.ClientID
現在,如果您只希望在 Completed 或 Planned 表中有記錄,請添加過濾器:
SELECT c.ClientID, c.ClientName, comp.FirstDeliveryStatus, comp.FirstDeliveryDate, p.NextDeliveryStatus, p.NextDeliveryDate FROM Client AS c LEFT OUTER JOIN Completed AS comp ON c.ClientID = comp.ClientID LEFT OUTER JOIN Planned AS p ON c.ClientID = p.ClientID WHERE p.ClientID IS NOT NULL OR comp.ClientID IS NOT NULL