用access做个库存,SQL 联合查询,入库减出库得到库存不对,请教!

SELECT 入库明细.物件编号, 入库明细.入库数量, 出库明细.出库数量, (Sum(入库明细.入库数量)-Sum(出库明细.出库数量)) AS 库存 FROM 出库明细 INNER JOIN 入库明细 ON 入库明细.物件编号=出库明细.物件编号 GROUP BY 入库明细.物件编号, 入库明细.入库数量, 出库明细.出库数量; 得到的库存1003万用表和1005没有,我要把他们也显示出来,问题在哪

你好,这个问题我想问下最后是怎么解决的可以吗

1.明显有问题啊~~~原有库存数据你没有考虑啊~~~除非做入库的时候是0库存,不然你的要考虑在入库之前的初始库存数据啊~
2.内链接的问题,如果不考虑初始库存,那入库与出库的内链接会过滤掉一部分有入库但是没有出库的数据,在你查找的项目里面是没有这部分数据的。

我没理解你说的修改库存编号的问题,入库的时候如果库存里面已经有这个编码,那就修改入库单中物资的编码还是修改库存数据中已经有的这个编码?我觉得你这个计算方式本身就是错的。而且如果物资管理系统在使用的话,物资的编码最好不要轻易修改,容易造成很大的管理问题。
我还是建议你考虑初始盘点库存,用多个表联查来解决这个问题,不要通过链接,
因为不管左链接还是右链接,他们都是以一张表做基础来进行合并。比如a表中有字段:1,2,3
B表中的字段:1,3,4;如果用左链接,那合并后结果:1,2,3 ;b表中的4列就没法显示,右链接的话同理的。
用入库表,出库表,库存表
现库存=入库表数量+库存表数量-出库表数量,这样计算出的应该要准确的多。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-15
SELECT 入库明细.物件编号, 入库明细.入库数量, 
isnull(出库明细.出库数量,0) as 出库数量, 
(Sum(入库明细.入库数量)-Sum(isnull(出库明细.出库数量,0))) AS 库存
FROM 出库明细 
right JOIN 入库明细 
ON 入库明细.物件编号=出库明细.物件编号 
GROUP BY 入库明细.物件编号, 入库明细.入库数量, 出库明细.出库数量

用left join 试试,isnull(出库明细.出库数量,0)解决 出库空数据null值加减运算问题

写错了,是 right JOIN

再不成Q我,共同研究。三药四九妖妖巴巴

第2个回答  2014-04-15
用right join ,因为所有的物件都有入库记录,不一定都有出库记录
因为你的入库表放在后面,所以用右外连接