日期:2014-05-18 浏览次数:20678 次
/*建表,插入测试数据*/
create table a(
Id integer primary key not null,
Num integer
);
insert into a (Id, Num) values (1, 500);
insert into a (Id, Num) values (2, 500);
create table b(
Id integer primary key not null,
aId integer,
Num integer,
foreign key(aId) references a(Id)
);
insert into b (Id, aId, Num) values (1, 1, 300);
insert into b (Id, aId, Num) values (2, 1, 200); /*这里楼主写的依然是1,我理解为楼主写错了,按照表_出库的规则,应该这个Id为2*/
insert into b (Id, aId, Num) values (3, 2, 300); /*同上*/
/*查询语句*/
select a.Id as Id, (a.Num - sum(b.Num)) as Num from a join b on a.Id = b.aId group by a.Id, a.Num
/*结果
Id Num
1 0
2 200
*/
------解决方案--------------------
我明白你的意思了就是两个表相减得出库存数据,你这样设计不太合理,应该再建一个库存表
进库时,库存表增加,出库时,库存表就减少。这样就好办了。你这样当然也能联合查询得到,就是不太合理
这样,以应对多次入库
select a.Id as Id, (sum(a.Num) - sum(b.Num)) as Num from a join b on a.Id = b.aId group by a.Id, a.Num