日期:2014-05-17  浏览次数:20542 次

查询产品信息并根据出入库记录计算库存同时显示出来的问题
在做库存管理中,有这么个问题
产品表:产品编号,产品信息
出入库记录表:产品编号,操作方式(值为出库、入库),操作日期,数量

如果需要得到如下结果:
产品编号 产品信息 库存数量
的表,一般我是先select产品表,查出后,在while中再查询 select sum(数量) from 出入库记录表,然后再给每个产品记录表附上查到的库存数据。

这样子使用嵌套程序的方式实现实时查询计算库存。之所以不在产品表中加入库存这个字段,一是每次数变更需要修改,容易出现不对的问题,二是当需要根据操作日期等条件进行查询一个时间段的出入库记录时,这个库存字段的值根本用不上。

使用传统的嵌套程序实现功能虽然可以,但是这样子当使用分页显示时,这个库存不能象其它字段一样可以实现排序,还在有SSH开发中,还需要将到的list再遍历一次再查询库存set进去,操作太麻烦。

请教大家有什么好办法可以使用一条sql语句就可以查询到产品信息及对应的库存,要支持条件查询。我本想使用union将两表分表合并得到,但这样子分页处理不知有没有什么问题。


数据库使用的是myql.

------解决方案--------------------
select A.pnum,sum(case when B.OperateType='入' then Amount else -Amount end)  as amount
from product A inner join inoutInfo B on A.pnum=B.pnum
 where A.pnum = 'A001' and B.OperDete<='2012-12-12 14:13:39.530'
group by A.pnum

------解决方案--------------------
select a.产品编号,a.产品信息,sum(case when b.操作方式='入库' then b.数量 else -b.数量 end)
from 产品表 a inner join 出入库记录表 b on a.产品编号=b.产品编号
group by a.产品编号,a.产品信息