我确定这是一个简单的问题,但是由于某种原因,我没有得到,也不想花费更多的时间来解决它。
我有一个包含供应商列表的表,另一个表包含按部门划分的每个供应商的活动。我正在尝试编写一个查询,该查询将向我显示哪个供应商没有针对特定部门的任何活动记录。
我有以下查询,它将向我显示哪些供应商没有任何记录
SELECT VendorTbl.VendorID, VendorTbl.VendorName
FROM VendorTbl LEFT JOIN VendorActivities ON VendorTbl.[VendorID] = VendorActivities.[VendorID]
WHERE (((VendorActivities.VendorID) Is Null));
这样做很好,但是,如果我尝试通过AND (VendorActivities.DivisionID)=3
在WHERE
子句中添加除法来进一步对它进行过滤,则不会得到任何结果。在这种情况下,我应该得到相同的结果,因为到目前为止,我在表中拥有的所有记录都是针对部门3的。
对于任何其他数据库引擎,只需将AND(VendorActivities.DivisionID)= 3包含在ON子句中即可。此查询将在例如SQL Server中运行:
SELECT VendorTbl.VendorID, VendorTbl.VendorName
FROM VendorTbl LEFT JOIN VendorActivities
ON VendorTbl.[VendorID] = VendorActivities.[VendorID] AND VendorActivities.DivisionID=3
WHERE VendorActivities.VendorID Is Null;
但是,这将与Access之外的所有其他数据库一起使用。在Access中,您需要以不同的方式进行操作。实现此目的的一种方法是使用子查询,如下所示:
SELECT VendorTbl.VendorID, VendorTbl.VendorName
FROM VendorTbl LEFT JOIN
(SELECT VendorActivities.[VendorID] FROM VendorActivities WHERE VendorActivities.DivisionID=3) AS q
ON VendorTbl.[VendorID] = q.[VendorID]
WHERE q.VendorID Is Null;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句