我正在查询以从保存客户订单的数据库中提取数据。有一张表保存客户 ID 和客户姓名。另一个表,其中包含订单 ID、下订单的客户 ID、购买商品的数量以及商品 ID。最后一个表保存项目 ID 和项目名称。我试图对这些进行排序以显示个人最受欢迎的购买,但在正确分组和排序以产生正确结果时遇到问题,下面是预期的示例。
customers
1 | John
---+-----
2 | Jane
orders
1 | 2 | 4 | 1
---+---+---+---
2 | 2 | 5 | 2
---+---+---+---
3 | 2 | 2 | 1
---+---+---+---
4 | 1 | 1 | 2
items
1 | Chair
---+-------
2 | Sofa
正确排序和分组后,输出表应如下所示:
John | Sofa
------+------
Jane | Chair
目前,我可以将商品名称连接到购买者,并返 repo 买的随机商品,但不是数量最多的商品。我尝试在 group by
中输入多个字段,并设法按名称正确对项目进行分组并按数量排序,但这样做时客户 ID 变得未分组。几天来一直在尝试解决这个问题,因此我们将不胜感激。请注意,这是实际问题的一个非常简化的版本,其中涉及更多的表,包括连接在一起的多个项目表。
最佳答案
您应该在连接表上使用 group by
select
b.name
, c.name
, sum(quantity) as tot
from orders as a
inner join Customers as b on a.customer_id = b.id
inner join Items as c on a.item_id = c.id
group by b.name, c.name
order by tot
关于MySQL双组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37904482/