我有 2 个表,“制造商”和“产品”。一个制造商可以有多个产品,一个产品有“数量”、“价格”和“成本”字段。
我已经将它们连接在一起,并且可以根据乘以“数量”来获得“价格”和“成本”字段的总和,但如果有任何产品,我希望将“cost_complete”标志设置为 false。未设置特定制造商的成本字段,因此我可以识别其产品尚未设置“成本”的任何制造商。
这是我到目前为止所拥有的,但我认为我的“cost_complete”标志会被每个产品覆盖。
SELECT m.name, p.quantity, p.price, p.cost, SUM(p.quantity) AS total_quantity,
SUM(p.price*p.quantity) AS total_price, SUM(p.cost*p.quantity) AS total_cost,
IF(p.cost<0, 'true','false') AS cost_complete
FROM manufacturer m
LEFT JOIN product p ON m.manufacturer_id = p.manufacturer_id
GROUP BY m.manufacturer_id
ORDER by m.name
如果 p.cost 为 null(或低于代码中的 0),您可以进行条件求和。然后你将得到没有 p.cost 的产品数量(如果为 0,则所有产品都有成本)
SELECT m.name, p.quantity, p.price, p.cost, SUM(p.quantity) AS total_quantity,
SUM(p.price*p.quantity) AS total_price, SUM(p.cost*p.quantity) AS total_cost,
sum(case when p.cost is null then 1 else 0 end)
FROM manufacturer m
LEFT JOIN product p ON m.manufacturer_id = p.manufacturer_id
GROUP BY m.manufacturer_id
ORDER by m.name