2014-12-05 193 views
0

我想要做的是看看是否有与工作订单相关的材料。因此,我将加入工单材料表,按“工单”对其进行分组,然后使用sum()查找与工单关联的总量。关于数量唯一重要的是如果它大于0。如果它超过0,我希望它出现在我的结果中,如果不是,我不希望它成为我的结果。MYSQL select SUM()

   SELECT `work_order`.`PO` 
         ,`work_order`.`Work Order` 
         ,`work_order`.`Part` 
         ,`work_order`.`Revision` 
         ,`work_order`.`Description` 
         ,`work_order`.`Drawing` 
         ,`work_order`.`Quantity` 
         ,`work_order`.`CSM` 
       FROM `work_order` 
       LEFT JOIN `wo_material` 
        ON `work_order`.`Work Order`=`wo_material`.`WO` 
       WHERE `work_order`.`CSM` OR IFNULL(SUM(IFNULL(`wo_material`.`Quantity`,0)),0) 
       GROUP BY `work_order`.`Work Order` 

错误#1111 - 组函数的使用无效。 如果我改变WHERE行

WHERE `work_order`.`CSM` 

查询有没有错误,但我的结果不正确。

在work_order工作订单是主要的。

在wo_material上WO不是主要的或唯一的,它有另一个主要的RN列。

这只是一个查询而非一个过程。

MySQL版本5.6.2

回答

3

使用having条款删除具有零量

  SELECT `work_order`.`PO` 
        ,`work_order`.`Work Order` 
        ,`work_order`.`Part` 
        ,`work_order`.`Revision` 
        ,`work_order`.`Description` 
        ,`work_order`.`Drawing` 
        ,`work_order`.`Quantity` 
        ,`work_order`.`CSM` 
      FROM `work_order` 
      LEFT JOIN `wo_material` 
       ON `work_order`.`Work Order`=`wo_material`.`WO` 
      GROUP BY `work_order`.`Work Order` 
      HAVING SUM(IFNULL(`wo_material`.`Quantity`,0)) > 0