日期:2014-05-18  浏览次数:20387 次

进销存的盘点功能如何实现不对应信息的多表查询
不好意思,我手头上没分给大家,希望哪位好心人给指点一下,大恩不言谢.
进销存里的一项盘点功能,已有以下表:
1.库存表(商品编码,库存量)
2.商品信息表(商品编码,商品名称)
3.前期库存(商品编码,前期库存量,时间)
4.出货明细表(出货单号,商品编码,出货量,时间)
5.进货明细表(进货单号,商品编码,进货量,时间)
6.盘点明细表(盘点时间,商品编码,商品名称,前期库存,出货量,进货量,库存量,盘点数,差额)
我的想法是先从前面5个表查询出(商品编码,商品名称,前期库存,出货量,进货量,库存量)的内容,通过输入盘点数,算出差额,再把数据存进盘点明细表里.
我写的SQL语句如下:
先创建两个临时表,计算出某时间段内各商品的出货量跟进货量
select   商品编码,sum(出货量)as   出货量   into   #出货   from   出货明细表   where   时间段   group   by   商品编码  
select   商品编码,sum(进货量)as   进货量   into   #进货   from   进货明细表   where   时间段   group   by   商品编码
select   s.商品编码,p.商品名称,b.前期库存,o.出货量,i.进货量,s.库存量   from   库存表   s,商品信息表   p,前期库存   b,#出货   o,#进货   i   where   时间段   and   s.商品编码=p.商品编码   and   p.商品编码=b.商品编码   and   b.商品编码=o.商品编码   and   o.商品编码=i.商品编码
这几个表都是通过 "商品编码 "联系的,现在有一个问题是:库存表,商品信息表,前期库存表的商品编码都可以对应起来,但是出货表跟进货表就不一定对应起来了,因为某一时间段内不可能各种商品都有出货跟进货,没有出货进货,出货表跟进货表是不作记录的,以上的SQL语句就不显示没有进出货的商品信息,而我想要的是希望把没有进出货的商品那两项显示为0,恳望各位大虾不吝赐教.谢谢谢谢

------解决方案--------------------
左连接这两个表啊

select ……, isnull(o.出货量,0), isnull(i.进货量,0)
……
where …… and b.商品编码*=o.商品编码 and b.商品编码*=i.商品编码