我要做的是查看是否有与工单有关的材料。所以我加入工单材料表,按“工单”分组,然后使用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
答案 0 :(得分: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