表 进库    ID  int,num int
表出库    ID  int,进库ID,num int表进库数据例如    1,500    2,500
表出库数据例如    1,1,300 1,1,200  1,2,300此时的意思就是表a进库了500箱,1、2产品,卖掉了500箱1,300箱2,那么此时查询出来的数据即为库存中还剩下的b为200.此时数据为       进库ID int,剩下的num描述的不好,抱歉,在线刷新谢谢了。

解决方案 »

  1.   

    /*
    表 进库 ID int,num int
    表出库 ID int,进库ID,num int表进库数据例如 1,500 2,500
    表出库数据例如 1,1,300 1,1,200 1,2,300此时的意思就是表a进库了500箱,1、2产品,
    卖掉了500箱1,300箱2,那么此时查询出来的数据即为库存中还剩下的b为200.此时数据为 进库ID int,剩下的num描述的不好,抱歉,在线刷新谢谢了。
    */go
    if OBJECT_ID('A')is not null
    if OBJECT_ID('B')is not null
    drop table A
    drop table B
    go
    create table A(
    ID int,
    num int
    )
    go
    insert A
    select 1,500 union all
    select 2,500
    go
    create table B(
    ID int,
    SaledId int,
    num int
    )
    go
    insert B
    select 1,1,300 union all
    select 1,1,200 union all
    select 1,2,300;with T
    as
    (
    select ID,SaledId,SUM(num) as num from B
    group by ID,SaledId
    )select T.ID,T.SaledId,A.num-T.num as num from T
    inner join A on A.ID=T.SaledId/*
    ID SaledId num
    1 1 0
    1 2 200
    */是这个意思么
      

  2.   


    /*建表,插入测试数据*/
    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
    */
      

  3.   

    我明白你的意思了就是两个表相减得出库存数据,你这样设计不太合理,应该再建一个库存表
    进库时,库存表增加,出库时,库存表就减少。这样就好办了。你这样当然也能联合查询得到,就是不太合理这样,以应对多次入库
    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