【发布时间】:2015-03-04 08:28:40
【问题描述】:
我有 2 张桌子,如下所示。 Activity 和 UOM 表之间存在外键关系。
Activity Table
ActivityID UOMID ProcessNam
---------------------------------------
1 2 Process1
2 1 Process2
3 null Process3
UOM Table
UOMId UOMText
-------------------------
1 UOM1
2 UOM2
下面是我得到的查询和结果集
select a.ActivityID, u.UOMID, a.ProcessName, u.UOMText
from Activity a
left join UOM u on a.UOMID = u.UOMId
ActivityID UOMID ProcessName UOMText
1 2 Process1 UOM2
2 1 Process2 UOM1
是否有可能获得如下的额外行;来自 UOMID 为空的活动表
3 null Process3 null
我尝试如下更改加入;但结果没有改变
left join UOM u on a.UOMID=u.UOMId or (a.UOMID is null or u.UOMId is
null)
提前致谢
【问题讨论】:
-
很奇怪,您的第一个查询应该会产生正确的结果。
-
在两个表中都有一个名为 IsActive 的位类型列,在 where 子句中,我正在检查两个表的 IsActive 列是否为真。这会导致问题吗?
-
你是唯一可以测试它的人。此外,具有 NULL UOM ID 的活动在逻辑上是不活动的。
-
@RohitShanbhag,就是这样。
标签: sql-server join foreign-keys