【发布时间】:2017-07-28 07:57:03
【问题描述】:
以下是我的问题的简化版本。 假设我有一个 products 表
products
-------------
id name
1 chocolate
2 pepsi
3 apple
4 chips
和订单表
orders
-------------------------------------------
id product_id quantity user_id
1 1 2 1
2 1 2 2
3 1 2 3
4 1 2 4
5 2 5 5
6 2 5 6
7 3 20 7
对于用户的每次购买,我们都会在订单表中插入一行,以及产品的 ID 和他订购的数量
我想按购买的降序获取产品列表,即。从购买最多到最少。但问题在于排名不仅取决于用户购买了多少次(行数),还取决于在该单次订单中购买了多少单位。
这是我尝试过的
SELECT products.name
FROM orders left join products
ON ( orders.product_id = products.id )
GROUP by orders.product_id
ORDER by count(orders.product_id) desc;
这显然是错误的,因为它给出了
chocolate
pepsi
apple
而不是
apple
pepsi
chocolate
问候
【问题讨论】:
-
不应该按product_id订购,而是按数量计算吗?
-
如果从
ORDER BY中删除desc会发生什么?