三个表是按照以下方式关联的:
物料表:物料id,名称,型号...
入库表:入库id,物料id,...入库类别,入库数量,入库日期,sn编号,...
出库表:出库id,入库id...出库数量,出库日期...现在有这么一个情况,举个例子
有几台电脑,各自有个sn编号,采购入库了,再出库,然后再归还入库,再可以出库,等等以此类推
我现在想知道一共采购了几台电脑,然后现在库存的电脑有几台(就是还没有出库,包括归还入库后没出库的)ps:电脑的物料id,名称,型号可以相同,但是sn编号肯定是不同的。
物料表:物料id,名称,型号...
入库表:入库id,物料id,...入库类别,入库数量,入库日期,sn编号,...
出库表:出库id,入库id...出库数量,出库日期...现在有这么一个情况,举个例子
有几台电脑,各自有个sn编号,采购入库了,再出库,然后再归还入库,再可以出库,等等以此类推
我现在想知道一共采购了几台电脑,然后现在库存的电脑有几台(就是还没有出库,包括归还入库后没出库的)ps:电脑的物料id,名称,型号可以相同,但是sn编号肯定是不同的。
FROM (
SELECT m.Mat_id, Mat_name, Mat_mode, sum( MIS_qty ) AS mistotal
FROM material m, MaterialInStorage mis
WHERE m.Mat_id = mis.Mat_id
AND Mat_category !=3
GROUP BY m.Mat_id, Mat_mode
) AS t1
INNER JOIN (
SELECT m.Mat_id, sum( MO_qty ) AS mototal
FROM Material m, MaterialInStorage mis, MaterialOutstock mo
WHERE m.Mat_id = mis.Mat_id
AND mis.MIS_id = mo.MIS_id
AND Mat_category !=3
GROUP BY m.Mat_id, Mat_name
) AS t2
INNER JOIN (
SELECT m.Mat_id, count( DISTINCT MIS_re1 ) AS misqty
FROM material m
LEFT JOIN materialinstorage mis ON m.Mat_id = mis.Mat_id
WHERE Mat_category !=3
GROUP BY m.Mat_id
) AS t3
ON t1.Mat_id = t2.Mat_id
AND t2.Mat_id = t3.Mat_id得到的分别是 编号,名称,型号,该型号一共采购了几台,现有库存几台。
有哪位大侠能否告知,这样写会不会太复杂,有没有更简便的语句