MySQL双组

标签 mysql

我正在查询以从保存客户订单的数据库中提取数据。有一张表保存客户 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/

相关文章:

mysql - 如何格式化并打印sql查询结果

java - 使用 Android fragment 获取 mysql 数据库信息

mysql - 仅允许具有标识符的实体将实体绑定(bind)到查询参数

SQL:链接连接效率

php - 网站关键词、无限加载、OOP

MySQL 工作台 : Connecting to database automatically on the startup

php - 如何阻止 Laravel 4 返回密码?

php - 将一页移动到另一页时 session 值为空

mysql - 如果重复条目则插入更改值

mysql - 在 phpmyadmin 中导入/导出数据