Select (Select sum(收入数量) from 收入表 where 收入表.商品名 = 商品名) as 收入,
       (Select sum(付出数量) from 付出表 where 付出表.商品名 = 商品名) as 付出,
       收入 - 付出  as 库存 
from 商品表
 

解决方案 »

  1.   

    我用WuHeHai(河海)提供的方法试了一下,有点问题,收入和付出数显示为空,就是没有数据,(顺便问一句,如何检测一个变量的类型,如字串型,数字型,逻辑型等),同时,句中的“收入-付出”提示出了错误,好象不认为“收入”、“付出”是合法变量。
    BTW,如分数不够,请给个话。
      

  2.   

    不会吧!!WuHeHai(阿海)的SQL语句有问题吗?
    我能否问一下,你是用的什么作为数据库驱动的?
    这种SQL语句在SQL SERVER中是完全正确的,不知道你用的数据库
    驱动与数据查询是不是支持中文的,再看 一下吧!
      

  3.   

    字段是空的是因为有入库记录而没有相应的出库记录,你可以这样写sql语句:
    select ((select isnull(sum(收入数量),0) from 收入表 where 收入表.商品名 = 商品名)-(select isnull(sum(付出数量),0) from 付出表 where 付出表.商品名 = 商品名)) as 库存。
    这是最佳的解决办法,如果允许负库存的话,如果不允许负库存自己加个判断。
      

  4.   

    注明:以上sql语句在PARADOX数据库中通不过原因是PARADOX不支持isnull函数,天呐PARADOX这个破东西。
      

  5.   

    我用的是paradox,就是扩展名为.db的那一种。我实际应用中没用中文,上面用中文是为了说明方便,上面的语句我适当的改了一下,语句通过了,但结果不太尽如人意。
    我想阿海的语句的思路可能是这样的,从商品名表中选出所有商品,针对每一种商品统计其总收入和总付出,然后算出库存,是这样吧?
    我用:
    Select (Select sum(收入数量) from 收入表 where 收入表.商品名 ="商品a") as 收入,
          (Select sum(付出数量) from 付出表 where 付出表.商品名 ="商品a") as 付出,
          收入 - 付出  as 库存 
    from 商品表 来统计某一品种没有任何问题,但统计所有商品时(用阿海提供的),收入、付出,库存都是空的,不知道是什么问题,另外,我的各个表中都有示例数据。
      

  6.   

    阿海写的是在query中执行吗?具体怎么写??原来不是只有现两个表吗,
    请问商品表,从何而来,此表要有哪些字段?
      

  7.   

    Select 商品名,(Sum(收入)-Sume(付出)) as 库存 
    from 收入表 LEFT OUTER JOIN 付出表 on (收入表.商品名=付出表.商品名)这样应该可以得到一张商品库存列表.
      

  8.   

    Select 商品名,(Sum(收入)-Sume(付出)) as 库存 
    from 收入表 LEFT OUTER JOIN 付出表 on (收入表.商品名=付出表.商品名)
    GROUP BY 商品名
      

  9.   

    我试了一下dearmyfriend(Dearmyfriend)提供的方法,统计数据有一个问题,就是当收入或付出表中关于某一条的记录有不止一条时,所得库存数据有重复统计的现象。我搞不明白。