三个表是按照以下方式关联的:
物料表:物料id,名称,型号...
入库表:入库id,物料id,...入库类别,入库数量,入库日期,sn编号,...
出库表:出库id,入库id...出库数量,出库日期...现在有这么一个情况,举个例子
有几台电脑,各自有个sn编号,采购入库了,再出库,然后再归还入库,再可以出库,等等以此类推
我现在想知道一共采购了几台电脑,然后现在库存的电脑有几台(就是还没有出库,包括归还入库后没出库的)ps:电脑的物料id,名称,型号可以相同,但是sn编号肯定是不同的。

解决方案 »

  1.   

    入库表直接group by sn可以吧
      

  2.   

    总算研究出来了SELECT t1.Mat_id, Mat_name, Mat_mode, misqty, mistotal - mototal
    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得到的分别是 编号,名称,型号,该型号一共采购了几台,现有库存几台。
    有哪位大侠能否告知,这样写会不会太复杂,有没有更简便的语句