根据出库、入库表,实现对库存的信息查询

数据库: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:建立商品库存表。在入库、出库的同时,对相应的商品库存量进行更改

特点:库存表的建立,使得逻辑思维更加清晰。但是需要在入库、出库操作(增、删、改、查)的时候进行仓库库存数量的调整。

   极大的增加了代码量及代码书写难度(同时操作多个表的数据,入库、出库的任何一个操作,都要相应的调整库存。需要多次开启数据库事务管理,保证多表操作的同时进行。)

 

posted @ 2016-04-16 16:07  AHAU航哥  阅读(4293)  评论(1编辑  收藏  举报