大家好,我在SQL里做查询,因为其中两个字段是Lookup类型的,所以要关联到另外的表做一定的处理。但是不知道为什么,添加上“翻译”语句后,查询的结果总是缺失了不少。后来发现,因为Lookup类型的字段有一部分是空值,所以想加上为空的情况。我写的语句如下:Select Distinct T1.CN_FACTORY_NO As 出厂编号, T2.TDM_DESCRIPTION As 产品名称, T2.TDM_ID As 产品图号, T4.DESCRIPTION As 容器类别, T3.CN_CHECKST As 检测标准, T3.CN_CHECKSC As 检测比例, T5.DESCRIPTION As 通过级别, T2.CN_MATERIAL As 材质from dbo.TN_PRODUCTS T1, dbo.TN_PROJECT T2, dbo.TN_DOCUMENTATION T3, dbo.TN_SORT T4, dbo.TN_PASSLE T5Where T1.CN_PRODUCT_ID = T2.TDM_ID And T1.CN_PRODUCT_ID = T3.CN_DRAWING_NO
And (T2.CN_SORT = T4.OBJECT_ID Or T2.CN_SORT is Null)
And (T3.CN_PASSLE = T5.OBJECT_ID Or T3.CN_PASSLE is Null)Order By T1.CN_FACTORY_NO其中的T4和T5是用来存储Lookup具体值的表。
请大家帮忙分析一下,我觉得是
Where T1.CN_PRODUCT_ID = T2.TDM_ID And T1.CN_PRODUCT_ID = T3.CN_DRAWING_NO
And (T2.CN_SORT = T4.OBJECT_ID Or T2.CN_SORT is Null)
And (T3.CN_PASSLE = T5.OBJECT_ID Or T3.CN_PASSLE is Null)
这里的逻辑关系没写正确,导致T2.CN_SORT或T3.CN_PASSLE为空的列都被隐藏了。不知道这里应该怎样的顺序才是正确的,谢谢大家!