条件左加入MS Access

时间:2018-05-23 09:55:55

标签: ms-access

我这里有一个查询,通过左连接基于查找表更新某些字段。

UPDATE finalTbl
LEFT JOIN LookupTbl ON (finalTbl.Product = LookupTbl.Product) AND (finalTbl.Detail1 = LookupTbl.[Product Detail])
SET finalTbl.Description = LookupTbl.Description, finalTbl.Category = LookupTbl.Category;

现在,finalTbl中有另一个字段,我想在此过程中加入Detail2)。

这个想法将是......

如果finalTbl.Detail2 IS NULLLEFT JOIN LookupTbl ON (finalTbl.Product = LookupTbl.Product) AND (finalTbl.Detail1 = LookupTbl.[Product Detail])

其他

LEFT JOIN LookupTbl ON (finalTbl.Detail2 = LookupTbl.[Product Detail])

    Detail2 相比,
  • Product无需依赖Detail1字段

我尝试通过Design View创建它但失败了。似乎我迷失了,需要一些关于它的光。感谢您的投入!

1 个答案:

答案 0 :(得分:1)

我还没有对此进行测试,但我经常在可能缺少日期的联接中使用NZ
例如:Table0.ShiftDate<=NZ(Table1.EndDate,#01/01/9999#)

尝试:

UPDATE finalTbl LEFT JOIN LookupTbl ON (finalTbl.Product = LookupTbl.Product) AND 
                                       (NZ(finalTbl.Detail1,finalTbl.Detail2) = LookupTbl.[Product Detail])
SET   finalTbl.Description = LookupTbl.Description
    , finalTbl.Category = LookupTbl.Category;  

修改
经过快速测试后,它似乎可以使用下面的SQL。

 SELECT *
 FROM  finalTbl LEFT JOIN LookupTbl ON (finalTbl.Product = LookupTbl.Product) AND 
                                       (NZ(finalTbl.Detail1,finalTbl.Detail2) = LookupTbl.[Product Detail]) 

再次编辑:
但我没有考虑到这一点。

  

与Detail1

相比,Detail2doesn不需要依赖Product字段