2014-12-05 221 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