如何使用group by,distinct和sum?

时间:2014-08-21 08:04:18

标签: php mysql database sum distinct

我有一张桌子:temp_shoppingcart。

在temp_shoppingcart中,我有temp_shoppingcart_id,user_id,product_id,数量和颜色。任何时候,用户在购物车中添加一个项目,它将添加一个新行来存储数据。

所以数据会有类似user_id:1,product_id:123,数量:1,颜色:黑色。如果用户再次添加相同的项目,则将输入与新行相同的数据。所以会有两次相同的行。

如何显示数据,以便将同一产品组合在一起显示为同一行,但数量是2行的总和?

1 个答案:

答案 0 :(得分:0)

实际上,这是一个非常基本的查询概念。也许您可以查看一些MySQL教程并了解更多信息。这样的事情:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

无论如何,下面的查询

  

SELECT product_id,SUM(数量),GROUP_CONCAT(颜色)
  从表
  GROUP BY product_id

将显示一个总和数量的行。 GROUP_CONCAT(颜色)将显示例如"红色,红色"如果两个条目"颜色"领域是红色的。

如果您想按颜色对项目进行分组,我建议您使用下面的查询。

  

SELECT user_id,product_id,color,SUM(quantity)
  来自temp_shoppingcart
  GROUP BY user_id,product_id,color

如果您不想按颜色分组

  

SELECT user_id,product_id,GROUP_CONCAT(颜色),SUM(数量)
  来自temp_shoppingcart
  GROUP BY user_id,product_id