检查表中的多个列与另一个表中的列

时间:2013-10-09 17:32:15

标签: sql ms-access ms-access-2007

表A 名称, 地址, ... 项目1, 项目2, ... Item10

表B 产品ID

我想运行一个SQL语句(在访问中)选择所有记录,其中任何项目([Item1] - [Item10])与表B中[ProductID]中找到的产品代码不匹配。我正在尝试在将其导出到我们的库存软件之前捕获文件中的所有错误,它无法找到该项目,我们必须重新开始。

我一直试图让LEFT JOIN工作,但没有成功。

1 个答案:

答案 0 :(得分:1)

对于[TableA] ......

ID  Name   Item1     Item2     Item3   
--  -----  --------  --------  --------
 1  Name1  Product1  Product2  Product3
 2  Name2  Product2                    
 3  Name3  Product1  Product4          
 4  Name4  Product1  Produtc2  Product3

......和[表B] ......

ProductID
---------
Product1 
Product2 
Product3 

...查询...

SELECT * FROM TableA
WHERE IIf(IsNull(Item1), False, DCount("*", "TableB", "ProductID='" & Item1 & "'") = 0)
    Or IIf(IsNull(Item2), False, DCount("*", "TableB", "ProductID='" & Item2 & "'") = 0)
    Or IIf(IsNull(Item3), False, DCount("*", "TableB", "ProductID='" & Item3 & "'") = 0)

...生产:

ID  Name   Item1     Item2     Item3   
--  -----  --------  --------  --------
 3  Name3  Product1  Product4          
 4  Name4  Product1  Produtc2  Product3