我想做的是查看是否有与工单关联的 Material 。所以我要加入工单 Material 表,按“工单”对其进行分组,然后使用 sum() 来查找与工单关联的总数量。唯一与数量有关的是它是否大于 0。如果它大于 0,我希望它出现在我的结果中,如果不是,我不希望它出现在我的结果中。
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
最佳答案
使用 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
关于MYSQL 选择其中 SUM(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307923/