加入不显示所有记录

问题描述:

我敢肯定,这是非常明显的,但我完全卡住,因为我以前从未见过。加入不显示所有记录

我有一个数据集可以根据类别列表(共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

尝试使用

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

移动你的病情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