标签:
数据库:mysql
要求:多个仓库、多个产品
表:1.入库凭证表 t_rkpz
2.入库明细表 t_rkpzmx
3.出库凭证表 t_ckpz
4.出库凭证表 t_ckpzmx
说明:两对主从表
[(主表:入库凭证表 t_rkpz,主键:rkbh)(从表:入库明细表 t_rkpzmx ,外键:rkbh)]
[(主表:出库凭证表 t_ckpz ,主键:rkbh)(从表:出库凭证表 t_ckpzmx ,外键:rkbh)]
建表 :
字段说明:入库编号、入库日期、仓库名称、仓库管理员
字段说明:所属入库编号、商品名称、商品数量、单位、备注
字段说明:出库编号、出库日期、仓库名称、仓库管理员
字段说明:所属入库编号、商品名称、商品数量、单位、备注
那么在产品进行入库,出库信息录入之后。如何对不同仓库、不同商品库存信息进行查询?
解决思路1:库存=入库-出库,在数据库中建立视图,实现分仓库、分商品的库存统计
特点:不需要建立库存表,但是需要在数据库中先建立好视图。
实现:
1)对入库记录产生的商品库存进行统计 v_rkkc
根据仓库名称(b.ckmc)和产品名称(a.goods) 结果集进行分组统计查询
select `b`.`ckmc` AS `ckmc`,`a`.`units` AS `units`,`a`.`goods` AS `goods`,sum(`a`.`sl`) AS `zsl`
from (`t_rkpzmx` `a` left join `t_rkpz` `b` on((`a`.`rkbh` = `b`.`rkbh`)))
group by `b`.`ckmc`,`a`.`goods`
2)对出库记录产生的商品库存进行统计 v_ckkc
同入库记录,根据仓库名称(c.ckmc)和产品名称(d.goods) 结果集进行分组统计查询
select `c`.`ckmc` AS `ckckmc`,`d`.`goods` AS `ckgoods`,sum(`d`.`sl`) AS `ckzsl`
from (`t_ckpzmx` `d` left join `t_ckpz` `c` on((`c`.`ckpz` = `d`.`ckbh`)))
group by `c`.`ckmc`,`d`.`goods`
3)库存统计数据 = 入库库存统计数据 - 出库库存统计数据(v_kc = v_rkkc - v_ckkc)
select `b`.`ckmc` AS `ckmc`,`b`.`goods` AS `goods`,`b`.`units` AS `units`,`b`.`zsl` AS `zsl`,`a`.`ckzsl` AS `ckzsl`,(`b`.`zsl` - `a`.`ckzsl`) AS `kc`
from (`v_ckkc` `a` join `v_rkkc` `b` on(((`a`.`ckckmc` = `b`.`ckmc`) and (`a`.`ckgoods` = `b`.`goods`))))
解决思路2:建立商品库存表。在入库、出库的同时,对相应的商品库存量进行更改
特点:库存表的建立,使得逻辑思维更加清晰。但是需要在入库、出库操作(增、删、改、查)的时候进行仓库库存数量的调整。
极大的增加了代码量及代码书写难度(同时操作多个表的数据,入库、出库的任何一个操作,都要相应的调整库存。需要多次开启数据库事务管理,保证多表操作的同时进行。)
标签:
原文地址:http://www.cnblogs.com/ahguSH/p/5383555.html