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

SQL怎么用递归实现3表查寻
有个一难题:
    算库存的问题,

已知上月末的商品库存,这个月每天的入库和出库,求每天的库存(上月末库存+当天入库-当天出库)
第二天的库存,是前一天得库存加上今天的入库,减今天的出库


 月末库存表(商品名称,库存数量)  入库表(日期《1-30号的》,商品名称,库存数量)   出库表(日期《1-30号的》,商品名称,库存数量)

帮忙想想思路~~
------解决方案--------------------
三个表 union all
sum(库存数量) 不对吗 ? 为啥要递归啊 
------解决方案--------------------
上一贴,我想了半天的劳动成果
还没得到的答复呢。。。。
------解决方案--------------------
引用:
上一贴,我想了半天的劳动成果
还没得到的答复呢。。。。

大哥,别这么抠嘛
------解决方案--------------------
这个不叫递归。也有点类似递归吧。叫连接查询而已。
------解决方案--------------------
阿汤哥,上一贴结了哦,麻烦看看这一贴吧? 要求是:第二天的库存,是前一天得库存加上今天的入库,减今天的出库哦
引用:
上一贴,我想了半天的劳动成果
还没得到的答复呢。。。。

------解决方案--------------------
怎么没人搭理我了?自己帮顶~~
------解决方案--------------------
引用:
阿汤哥,上一贴结了哦,麻烦看看这一贴吧? 要求是:第二天的库存,是前一天得库存加上今天的入库,减今天的出库哦
引用:

上一贴,我想了半天的劳动成果
还没得到的答复呢。。。。

呵呵 开个玩笑了

你弄点测试数据 我看看,大家也都好帮你。
------解决方案--------------------
有几种方法,首先你按日期得到一个每天库存的进出视图 结果如下
日期    期初   进    出 
1.1号   100   0    0 
2.1号         2    3
3.1号          4    5
然后 select 进,出,(select sum(期初)+sum(进)-sum(出) from view b where b.日期<=a.日期)
from view a

此方法简单,缺点是速度慢点
------解决方案--------------------
有个快捷的方法:
整个日期辅助表(日期) ,就是你需要求哪些天的库存,比如求2012-10-1,2012-10-2,2012-10-3 就放三条数据

select b.日期,goodsid,sum(数量)
from (select goodsid,数量,日期 from 月末库存表
union all  select goodsid,数量,日期 from 入库表
union all  select goodsid,数量,日期 from 出库表
) as a , 日期辅助表 as b
where  a.日期<=b.日期
group by b.日期,goodsid
------解决方案--------------------
月末库存表
-------------
商品名称  商品数量
 a           10
 b           5 
 c           6
入库表
----------------
商品名称  商品数量   商品日期
 a          10        20120102
 b          4         20120103
 c          30        20120104
 d          7         20120102
出库表
---------------
商品名称  商品数量   商品日期