试图获取所有已售出但仍然只有一行的产品

时间:2018-05-23 16:05:51

标签: mysql

我有这个表产品

enter image description here

和购物车

enter image description here

我想使用此查询获取所有在购物车中销售的产品

SELECT products.name,sum(products.price) as price, count(*) as quantity 
FROM carts 
join products on carts.product_id=products.id 
where status = 'sold'

但为什么我只得到一排?

1 个答案:

答案 0 :(得分:1)

只返回一行,因为SELECT列表中有聚合表达式。

  SUM(products.price) 
  COUNT(*)

缺少GROUP BY子句,这将导致所有行“折叠”为一行。与我们运行的结果类似

 SELECT COUNT(1) FROM foo ;

我们回来了一行。

我怀疑你想在查询的末尾添加GROUP BY products.name子句。

这会导致所有匹配值为products.name的行折叠为一行,但我们会为products.name的每个不同值返回一行。