2017-06-29 120 views
0

我敢肯定,這是非常明顯的,但我完全卡住,因爲我以前從未見過。加入不顯示所有記錄

我有一個數據集可以根據類別列表(共6個)而不同。有些客戶將擁有1或2個其他類別。我試圖通過的信息旨在通過所有6個類別,並根據客戶端提供相應的信息。

所以我建立了一個簡單的ID(1到6)和類別映射表。然後我加入到我的客戶數據。我正在使用的測試數據有1,2,3,5類,而我得到NULL的6我沒有得到任何4。我應該看到類4的空行,因爲它不存在於客戶端數據?

SELECT * 

FROM .dbo.Lookup_Category C 

LEFT JOIN dbo.Client CL ON C.ID = CL.Category 

WHERE CL.ID = 423 OR CL.Category IS NULL 
+0

你可以顯示原始數據和表格模式嗎? –

+0

你試過了嗎:左外連接? – Svenmarim

回答

2

嘗試使用

SELECT * 
FROM .dbo.Lookup_Category C 
LEFT JOIN dbo.Client CL ON C.ID = CL.Category and (CL.ID = 423 OR CL.Category IS NULL) 

使用其中LEFT JOIN被用作內部的加入

+0

非常感謝! – Carlos80

2

移動你的病情WHEREON條款。

WHERE執行LEFT JOIN,並篩選出CL.IDNULL值。

SELECT * 
FROM .dbo.Lookup_Category C 
LEFT JOIN dbo.Client CL ON C.ID = CL.Category 
         AND (CL.ID = 423 OR CL.Category IS NULL) 
+0

我是對的,當你把它作爲一個左外連接時,你可以使用where子句? – Svenmarim

+0

@Svenmarim一個'LEFT JOIN'和'LEFT OUTER JOIN'是一樣的。 「OUTER」關鍵字是完全可選的。 – Siyual

+0

Okaay哈哈謝謝 – Svenmarim