表1之间的SQL查询的差异相比,外键引用表2的总和子项目
比方说,我有2个表:表1之间的SQL查询的差异相比,外键引用表2的总和子项目
表1
ID Name Quantity
1 Pencil 12
2 Pen 35
3 Ruler 50
表2
ID Name Quantity FK_Table1
1 Pencil 6 1
2 Pencil 6 1
3 Pen 10 2
4 Pen 5 2
5 Pen 5 2
6 Pen 5 2
7 Ruler 12 3
8 Ruler 12 3
9 Ruler 12 3
10 Ruler 12 3
-
我需要d进行查询,该查询仅选择来自数量列的table1中的行,其与表2中具有相同FK_Table1值的所有数量列的总和不匹配
(例如,由于表1中的数量为12,所以铅笔将不会被选中,与表2中的行ID#1和2的数量总和相同)。
我需要做的是选择表2行,而不是表1的查询,但同样的规则适用
我怎样才能做到这一点?
试试下面的查询:
select * from table1 t1
where t1.Quantity <> (select sum(t2.Quantity) from table2 t2 where t2.FK_Table1 = t1.ID);
为了得到表2的记录:
select * from table2 where FK_Table1 IN(
select t1.ID from table1 t1
where t1.Quantity <> (
select sum(t2.Quantity) from table2 t2 where t2.FK_Table1 = t1.ID
)
);
你能解决table2而不是table1吗? –
然后会有相同项目的多行。你想要那个 ? –
我不确定我是否理解你的意思,但我试图实现的是显示table2,ID为3-10的行应在SELECT语句中返回,因为它们与父项的数量不匹配具有相同外键的子项目 –
你尝试过什么做的(请发表您的查询脚本)? – etsa