mysql - SELECT...HAVING 结果中的总和和小计

标签 mysql sql

我试图分别获取每个客户订单的总和,但实际上我获取的是所有订单的总和。我在这里做错了什么?

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/

相关文章:

php - 如何选择mysql结果?

php - Yii 1、获取CDbCriteria生成的SQL

mysql - 使用纯 SQL 更新 Postgres 计数器缓存

SQL Server - 求和值并添加到所有相同的 ID

mysql - 查找第二高查询不起作用

Mysql:如果存在则重命名表

MySQL错误: Unknown column in 'field list' error

sql - 减少查询的缓冲区缓存命中会导致随机性能问题

sql - 在空表上创建索引后插入数据还是在oracle上插入数据后创建唯一索引?

mysql - 将 mysql sql 转换为 sql server