我有一个包含三个表的数据库,即 RMA、Orders 和 Customer,我正在尝试按州计算退货 (RMA)(位于客户表中)。该查询只返回一条记录(仅计算 UTAH)。
问问题
139 次
1 回答
0
您的查询缺少一个group by
按 聚合记录的子句state
。在MySQL以外的所有其他数据库中,您将获得语法错误...但是不幸的是,MySQL对此(当ONLY_FULL_GROUP_BY
禁用选项时)是Lax的,这使得这种错误更难发现。
select count(*) as total_returns, c.state
from customers c
inner join orders o on c.customerID = o.customerID
inner join rma r on o.orderID = r.orderID
group by c.state --> here
请注意,我使用表别名来缩短查询,并将计数更改为简单count(*)
(在查询中等效,对数据库更有效)。
如果要显示没有返回的状态,则可以使用left join
s 代替:
select count(r.orderID) as total_returns, c.state
from customers c
left join orders o on c.customerID = o.customerID
left join rma r on o.orderID = r.orderID
group by c.state --> here
于 2020-06-20T18:10:26.053 回答