-1

我有一个包含三个表的数据库,即 RMA、Orders 和 Customer,我正在尝试按州计算退货 (RMA)(位于客户表中)。该查询只返回一条记录(仅计算 UTAH)。

我附上了代码的屏幕截图。

4

1 回答 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 joins 代替:

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 回答