在仓库管理模块中,有进仓、出仓等数据表,现在要查询某种物料在货仓中的存量,
进仓表结构为:“内部订单号码”inorder、“物料编码”mat_code、“进仓数量” in_quantity、“进仓日期”indatetime、“操作员”operator。
出仓表结构为:“内部订单号码”inorder、“物料编码”mat_code、“出仓数量” out_quantity、“出仓日期”outdatetime、“操作员”operator。
1、一个内部订单号码可能对应多个物料编码,多个内部订单号码可能对应一个物料编码。
2、可能现在只有进仓而没有出仓,即在进仓表中可以找到内部订单号码及物料编码,但在 出仓表中却找不到。
3、当要查询某个物料的存仓量时,要将所有此物料的进仓总数量减去出仓总数量。
以上查询,我用的是以下语句:
SELECT delivery.inorder,delivery.mat_code,material.mat_name,
sum(in_quantity) - sum(out_quantity)
FROM delivery,material,producteout
WHERE delivery.inorder = producteout.inorder and
delivery.mat_code = producteout.mat_code and
material.mat_code = delivery.mat_code and
delivery.inorder like % and delivery.mat_code like 2-1057%
GROUP BY delivery.inorder,delivery.mat_code,material.mat_name
但是有个问题,不出仓表中没有与进仓表中相同的资料时,则找不到资料。但不应该呀,其应该返回进仓总量。能不能用一条SQL语句完成此功能,用连接?用子查询?望众高手给予指点!
谢谢!
SELECT a.inorder,material.mat_code,material.mat_name,
sum(quantity)
FROM material join (select inorder,mat_code,in_quantity as quantity from delivery where inorder like % mat_code like 2-1057%
union select inorder,mat_code,-out_quantity as quantity from producteout where inorder like % mat_code like 2-1057%) a
on a.mat_code=material.mat_code group by a.inorder,material.mat_code,material.mat_name