我试图分别获取每个客户订单的总和,但实际上我获取的是所有订单的总和。我在这里做错了什么?
SELECT c.customerNumber, sum( r.quantityOrdered * r.priceEach ) AS sum
FROM customers c, orders o, orderdetails r
WHERE c.customerNumber = o.customerNumber
AND o.orderNumber = r.orderNUmber
GROUP BY c.customerNumber
HAVING COUNT( o.orderNumber ) <=3
最佳答案
首先,您应该使用JOIN
,因为它是编写语法的标准化方式。使其更易于阅读。
SELECT c.customerNumber, sum( r.quantityOrdered * r.priceEach ) AS sum
FROM customers c
LEFT JOIN orders o ON c.customerNumber = o.customerNumber
LEFT JOIN orderdetails r ON o.orderNumber = r.orderNUmber
GROUP BY c.customerNumber
HAVING COUNT( o.orderNumber ) <=3
当您使用LEFT JOIN
时,这将给出表customers
的结果,即使他们在orders
中没有任何记录和订单详细信息
。
尝试一下!
关于mysql - SELECT...HAVING 结果中的总和和小计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22300896/