遇到一个比较麻烦的先进先出有关问题
遇到一个比较麻烦的先进先出问题
出库表
PID---商品ID,Num---数量,pDate---生产日期,expDate---到期日期
某些商品在输入的时候,操作者可能只输入生产日期或者到期日期在其中一项
操作者没有输入日期的,系统自动给成1900年,下同。
库存表
InDate---入库日期
从库存表里按出库表扣减库存,要求优先按生产日期,再按到期日期匹配出库。按入库日期先进先出。
结果应该是:
库存表
------解决方案--------------------
我的建议:
1,给表加个自增列。用自增列来排序先后。
2,查找论坛以前的帖子,先进先出的很多
------解决方案--------------------
这种计算方式,用SQL不好实现。个人认为只有用存储过程了。但分析了一下,跟楼主的意思有些出入,我觉得结果应该是:
出库表
PID Num pDate expDte
001 2 1900-01-01 1900-01-01
001 32 1900-01-01 2017-01-01
001 4 2011-01-01 1900-01-01
001 50 2012-01-01 2017-01-01
PID---商品ID,Num---数量,pDate---生产日期,expDate---到期日期
某些商品在输入的时候,操作者可能只输入生产日期或者到期日期在其中一项
操作者没有输入日期的,系统自动给成1900年,下同。
库存表
PID Num pDate expDate InDate
001 1 1900-01-01 1900-01-01 2013-01-01
001 2 1900-01-01 1900-01-01 2013-02-01
001 1 1900-01-01 1900-01-01 2013-03-01
001 70 1900-01-01 2017-01-01 2013-06-02
001 10 2011-01-01 1900-01-01 2013-01-03
001 20 2012-04-01 2017-01-01 2013-05-02
InDate---入库日期
从库存表里按出库表扣减库存,要求优先按生产日期,再按到期日期匹配出库。按入库日期先进先出。
结果应该是:
库存表
PID Num pDate expDate InDate
001 0 1900-01-01 1900-01-01 2013-01-01---扣出库表第一条
001 1 1900-01-01 1900-01-01 2013-02-01---扣出库表第一条
001 1 1900-01-01 1900-01-01 2013-03-01---没扣
001 0 1900-01-01 2017-01-01 2013-01-02---扣出库表第二、四条
001 0 2011-01-01 1900-01-01 2013-01-03---扣出库表第三条
001 18 2012-01-01 2017-01-01 2013-05-02---虽然生产日期不符合,但到期日期符合出库第4条
------解决方案--------------------
我的建议:
1,给表加个自增列。用自增列来排序先后。
2,查找论坛以前的帖子,先进先出的很多
------解决方案--------------------
这种计算方式,用SQL不好实现。个人认为只有用存储过程了。但分析了一下,跟楼主的意思有些出入,我觉得结果应该是:
PID Num pDate expDate InDate