我在MS Access 2010中构建SQL查询。业务问题是:
所有类型的小部件' A'应该有相应的检查 交易记录类型'内部'在检查表中。但是,一些' A'小部件还没有类型'内部'的检查交易记录。在检查中 表。编写一个SQL查询来计算类型' A'的小部件数量。 缺少内部'检验交易。
有三个表格:
查询应返回显示类型为' A'的小部件数量。在widget_info表中,并且在内部'类型的检查表中没有记录。请注意,检查表可能包含每个窗口小部件的多个记录,这些记录不是“内部”类型的,即,我有一个“预先”的记录。检查记录或外部'检查记录。
我最好的一点是:
SELECT Count(widgets.*) AS count
FROM (widgets
INNER JOIN widget_info
ON widget_info.widget_number = widgets.widget_number)
INNER JOIN inspections
ON inspections.widget_number = widgets.widget_number
WHERE widget_info.type ='A' AND
NOT EXISTS (SELECT 1 FROM inspections WHERE inspections.type <> 'internal')
当我执行查询时,我得到一个零计数,即使我知道有些小部件缺失&#39;内部&#39;检查。
谢谢你的时间!
鲍勃
答案 0 :(得分:0)
确定此查询的问题是NOT EXISTS()函数的WHERE子句不包含与窗口小部件表和检查表之间的窗口小部件编号匹配的条件。我按如下方式修改了查询,但它确实有效。
SELECT Count(widgets.*) AS count
FROM (widgets
INNER JOIN widget_info
ON widget_info.widget_number = widgets.widget_number)
INNER JOIN inspections
ON inspections.widget_number = widgets.widget_number
WHERE widget_info.type ='A' AND
NOT EXISTS (SELECT 1 FROM inspections WHERE inspections.type <> 'internal'
AND inspections.widget_number = widgets.widget_number);