是这样的:我想让“入库数量”减“出库数量”等于现在的库存,下面的查询语句没有出错,但是执行查询的结果不正确。请大家给我看看,其中ruku,chuku代表入库和出库表,spshuliang代表商品数量,spid代表商品编号。我用的是ACCESS数据库。
select ruku.spid,sum(ruku.spshuliang)-sum(chuku.spshuliang) as 库存商品数量 from chuku,ruku where ruku.spid=chuku.spid group by ruku.spid,chuku.spid order by ruku.spid谢谢大家。

解决方案 »

  1.   

    select ruku.spid,(sum(ruku.spshuliang)-sum(chuku.spshuliang))as 库存商品数量 from chuku,ruku where ruku.spid=chuku.spid group by ruku.spid,chuku.spid order by ruku.spid
    再试试 
      

  2.   

    由于有可能出现只有入库没有出库的情况(一般不会有只有出库没有入库的情况),所以你不能直接用=进行关联,应该使用左连接left join,具体语法查看jet sql帮助select ruku.spid,sum(ruku.spshuliang)-sum(IsNull(chuku.spshuliang,0)) as 库存商品数量 from chuku,ruku where ruku.spid*=chuku.spid group by ruku.spid,chuku.spid order by ruku.spid
      

  3.   

    sum(ruku.spshuliang)-sum(chuku.spshuliang) as 库存商品数量 
    其实你可以用程序写的啊,这样不但减轻服务器的负担,而且更加具有灵活性啊再不行用存储过程写
      

  4.   

    TO:firetoucher(风焱)
    ACCESS支持“*=”吗?
    :)
      

  5.   

    firetoucher(风焱)说的没错,用左连接就可以了:select ruku.spid,sum(ruku.spshuliang)-sum(iif(isnull(chuku.spshuliang), 0, chuku.spshuliang)) as 库存商品数量 
    from ruku left join chuku on ruku.spid = chuku.spid
    group by ruku.spid, chuku.spid order by ruku.spid
      

  6.   

    上面的有点问题,应该group后再左连接相减:select a.spid,a.spshuliang1-iif(isnull(b.spshuliang1), 0, b.spshuliang1) as 库存商品数量 
    from 
    (select spid, sum(spshuliang) as spshuliang1 from ruku group by spid) as a
    left join 
    (select spid, sum(spshuliang) as spshuliang1 from chuku group by spid) as b
    on a.spid = b.spid
    order by a.spid
      

  7.   

    select a.spid,(a.spshuliang-b.spshuliang) as 库存商品数量 from 
    (select spid,sum(spshuliang) as spshuliang from ruku group by spid) as a 
    left outer join 
    (select spid,sum(spshuliang) as spshuliang from chuku group by spid) as b 
    on a.spid=b.spid