如何计算行和按行分组的行?

时间:2016-12-12 19:14:17

标签: mysql database

我有三张桌子:

  • 产品(id,name,category_id,...)
  • 类别(id,...)
  • 销售(id_product,id_user,selled,date_sale,quantity)

我试图获得最畅销的产品:

SELECT P.`id`, P.`name`, C.`name` as catName, SUM(S.`quantity`) 
FROM `products` AS P, `categories` AS C, `sales` AS S 
WHERE P.`category_id` = C.`id` 
    AND P.`id` = S.`id_product` 
    AND P.`id` IN ( 
                    SELECT `id_product` FROM `sales` 
                    WHERE `selled`=1
                  ) 
LIMIT 8

Result of the query

提供我想要的所有信息,但数量未按id_product 分组/汇总的事实除外。

所以,为了解决这个问题,尝试使用 SUM(S.quantity) 分组来执行id_product:

SELECT P.`id`, P.`name`, C.`name` as catName, SUM(S.`quantity`) 
FROM `products` AS P, `categories` AS C, `sales` AS S 
WHERE P.`category_id` = C.`id` 
    AND P.`id` = S.`id_product` 
    AND P.`id` IN ( 
                    SELECT `id_product` FROM `sales` 
                    WHERE `selled`=1
                  ) 
LIMIT 8 
GROUP BY P.`id`

查询后,我收到错误

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在#BY; GROUP BY P附近使用正确的语法。id'在第3行

有没有办法实现我想要的目标?为什么group by不能像这样使用?

1 个答案:

答案 0 :(得分:1)

GROUP BY来自LIMIT

节日快乐!