Sql 如何加入并获得4个结果

Sql 如何加入并获得4个结果,sql,join,left-join,Sql,Join,Left Join,我有两张桌子 A artnr grp name 1 FlowerA NameA 2 FlowerB NameB 3 FlowerC NameC 4 FlowerD NameD B artnr eigenschap waarde 1 color Red 2 color Null 4 color Yellow 4 Height 30 如何使用颜色获得4个结果 Select A.Artnr, A.grp, A.name, B.waarde from A l

我有两张桌子

A
artnr grp name
1 FlowerA NameA
2 FlowerB NameB
3 FlowerC NameC
4 FlowerD NameD

B
artnr eigenschap waarde
1 color Red
2 color Null
4 color Yellow
4 Height 30
如何使用颜色获得4个结果

Select A.Artnr,
       A.grp,
       A.name,
       B.waarde
from A
left join B on B.Artnr = A.Artnr 
where B.Eigenschap = 'color'
我的问题是表B没有artnr 3,artnr 2是空的(为Null),这没有问题。当两个表中都不存在记录时,我会遇到问题

我希望得到以下结果:

A left join b
artnr grp name   waarde
1 FlowerA NameA  red
2 FlowerB NameB  NULL
3 FlowerC NameC  NULL   -- Droptopp: I want to see this even not in table B
4 FlowerD NameD  yellow
我得到了3行,artnr 3缺少了一行,我想这是因为它不在表B中。那么,如何在列颜色中获得4行和artnr 3为空单元格的行的结果呢

SELECT A.Artnr, A.grp, A.name, B.waarde
FROM A 
LEFT OUTER JOIN B 
ON (A.artnr = B.artnr)

您的问题似乎是
的位置。本声明:

Select A.Artnr,
   A.grp,
   A.name,
   B.eigenschap,
   B.waarde
from A
left join B on B.Artnr = A.Artnr
将为第3条返回一行,即

3 FlowerC NameC NULL NULL
然后过滤
eigenschap='color'
,这将从最终结果集中删除该行,因为
eigenschap
NULL
。将该条件移动到联接条件:

Select A.Artnr,
   A.grp,
   A.name,
   B.waarde
from A
left join B on B.Artnr = A.Artnr AND
B.eigenschap = 'color'

对于“两个表中都不存在”的记录,您希望发生什么?两个表中都不存在的记录是什么?@Droptopper,您的预期结果是什么..?预期结果是什么tartnr对两个表都相同,因此在选择数据时使用别名,例如选择a.Artnr作为辅助,a.grp作为grp,a.name作为名称,B.color作为B颜色从左连接B在B.Artnr=A.Artnr我想要4个结果我想要Artnr 3也显示出来,即使它不在两个表中。这样我可以看到我错过了什么。我不希望表B中包含表A中的所有记录,并且颜色为空(为Null)