我在Access中有一个数据库,有两个名为Necessary_components和Actual_components的表
**Necessary_components data:**
ID Name
1 comp1
2 comp2
3 comp2
4 comp2
5 comp3
6 comp3
**Actual_components data:**
ID Name
143 comp1
164 comp2
166 comp3
现在我想显示Actual_components中缺少的组件(对于给定的示例,缺少3个组件:2-> comp2和1-> comp3)。
下面是我使用的代码,但它不起作用,因为如果有更多具有相同名称的组件,它将不会考虑。甚至可以有10个具有相同名称的组件。
SELECT Name FROM Necessary_components WHERE
Name NOT IN (SELECT Name FROM Actual_components) ORDER BY Name ASC;
答案 0 :(得分:0)
我不明白你的问题。根据您当前的数据,所有组件都存在于实际组件中 如果说,你有一个名为 - comp4的组件在必要的组件中,那么你将使用LEFT OUTER JOIN得到Comp4
答案 1 :(得分:0)
这样的事可以帮助你...
但同样,您的桌面设计存在问题,修复这是您未来编码的更简单的解决方案。
- 未经测试
select N.Name FROM
(
select N.Name, count(N.Name) [NecessCount]
from Necessary_components N group by N.Name
) AS T1
Left OUTER JOIN
(
select A.Name, count(A.Name) as [ActualCount]
from Actual_components A group by A.Name
) AS T2
on T1.Name = T2. Name
where [NecessCount] - isnull([ActualCount] ,0) > 0