三个表
物料表:id,名称,型号...
入库表:id,...入库数量,入库日期...
出库表:id,...出库数量,出库日期...现在要得到这样一个表:名称,型号,总入库数量,总出库数量,库存数量我这样写只得到第一行的数据
select Mat_name,Mat_mode,sum( MIS_qty ) as mistotal,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
这个应该怎么写呀?求高手指点

解决方案 »

  1.   


    select Mat_name,Mat_mode,sum( MIS_qty ) as mistotal,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
    group by Mat_name,Mat_mode
      

  2.   


    select t1.名称,
           t1.型号,
           总入库数量 = isnull((select sum(入库数量) from 入库表 t2 where t2.id = t1.id),0),
           总出库数量 = isnull((select sum(出库数量) from 出库表 t3 where t3.id = t1.id),0),
           库存数量 = isnull((select sum(入库数量) from 入库表 t2 where t2.id = t1.id),0) - isnull((select sum(出库数量) from 出库表 t3 where t3.id = t1.id),0)
    from 物料表 t1
      

  3.   

    select Mat_name,Mat_mode,
    mistotal=(select sum(MIS_qty )from materialinstorage where mat_id=m.mat_id),
    mototal=(select sum(MO_qty) from materialoutstock where MIS_id=Mat_id)
    from material m
      

  4.   


    select Mat_name,Mat_mode,b.mistotal,c.mototal from material a 
    left join 
    (select mistotal = sum(MIS_qty),mat_id from materialinstorage group by mat_id) b on a.id = b.mat_id
    left join 
    (select mototal = sum(MO_qty),mat_id from materialoutstock  group by mat_id)c on a.id = c.mat_id
      

  5.   

    group by Mat_name,Mat_mode用到聚合函数,显示列需要加上分组
      

  6.   

    直接group by不对
    我入库一次10个,出库4次,每次一个,它显示的就是总入库40个,总出库4个
      

  7.   

    思路上应该用LEFT JOIN,方法如下:select * from 
    (select wl.id AS rkid,wl.名称,wl.型号,rk.入库数量,rk.入库日期 from 物料表 AS wl LEFT JOIN 入库表 AS rk ON wl.id=rk.id) AS T1
    INNER JOIN
    (select wl.id AS ckid,wl.名称,wl.型号,ck.出库数量,ck.出库日期 from 出库表 AS ck LEFT JOIN 出库表 AS ck ON ck.id=rk.id) AS T2
    ON T1.rkid=T2.ckid
      

  8.   

    思路上应该用LEFT JOIN,方法如下(上面有个参数错误,不能编辑,故重发):select * from 
    (select wl.id AS wlid,wl.名称,wl.型号,rk.入库数量,rk.入库日期 from 物料表 AS wl LEFT JOIN 入库表 AS rk ON wl.id=rk.id) AS T1
    INNER JOIN
    (select wl.id AS wlid,wl.名称,wl.型号,ck.出库数量,ck.出库日期 from 物料表 AS wl LEFT JOIN 出库表 AS ck ON ck.id=rk.id) AS T2
    ON T1.wlid=T2.wlid
      

  9.   

    我没说清楚,我用的是mysql
    然后三个表是按照以下方式关联的:
    物料表:物料id,名称,型号...
    入库表:入库id,物料id...入库数量,入库日期...
    出库表:出库id,入库id...出库数量,出库日期...我把上面的sql语句改了下,可是错了,我是不是哪里改错了?select * from
    (select m.Mat_id,Mat_name,Mat_mode,SUM(MIS_qty) as misqty from material m left join materialinstorage mis on m.Mat_id=mis.Mat_id) as t1
    inner join
    (select m.Mat_id,Mat_name,Mat_mode,SUM(MO_qty) as moqty from material m left join materialinstorage mis on m.Mat_id=mis.Mat_id left join materialoutstock mo on mis.MIS_id=mo.MO_id) as t2
    on t1.Mat_id=t2.Mat_id 
      

  10.   


    在表 m 里应该用GROUP BY 进行分组,因为你用了SUM()聚合函数
      

  11.   

    嘿!你是不是FJUT 09级 JSJ 学生啊!这个问题,我最近也搞了好久,解决了! 加我好友!