SELECT
        m.id,
        m. NAME,
        m.`code`,
        m.specification,
        mt.`name` typeName,
        m.unit,
        ms.stocks,
        SUM(mir.amount) allInNumber,
        SUM(mor.amount) allOutNumber,
        SUM(mrr.stockAmount) allReturnNumber
        FROM
        t_e_material_stock ms
        LEFT JOIN t_e_material m ON ms.materialId = m.id
        LEFT JOIN t_e_material_type mt ON ms.materialId = mt.id
        LEFT JOIN t_e_material_in_record mir ON ms.materialId = mir.materialId
        AND mir.nodeId = ms.nodeId
        LEFT JOIN t_e_material_out_record mor ON ms.materialId = mor.materialId
        AND mor.nodeId = ms.nodeId
        LEFT JOIN t_e_material_return_record mrr ON ms.materialId = mrr.materialId
        AND mrr.nodeId = ms.nodeId
WHERE ms.nodeId = 874
        GROUP BY m.id

解决方案 »

  1.   

    mysql 的    GROUP BY    跟MSSQL 不一样的額.写出你测试数据,  期望结果值,  别人才好测试.
      

  2.   


    你的意思是 原来用inner join 数据很少,现在用left join 就多吗
      

  3.   

    你确定基表是用t_e_material_stock ms吗
      

  4.   

    left join 多个表的时候,left join后的表使用子查询先把数据查出来在关联,就可以啦
      

  5.   

    left join 的某个表里有多条数据与主表数据可以匹配上