代码之家  ›  专栏  ›  技术社区  ›  Fil

试着把所有售出的产品都取走,但只有一行

  •  1
  • Fil  · 技术社区  · 7 年前

    我有这个餐桌用品

    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 回复  |  直到 7 年前
        1
  •  1
  •   spencer7593    7 年前

    由于选择列表中存在聚合表达式,因此只返回一行。

      SUM(products.price) 
      COUNT(*)
    

    如果没有GROUPBY子句,将导致所有行“折叠”成一行。与我们跑步的结果相似

     SELECT COUNT(1) FROM foo ;
    

    我们只有一排回来。


    我怀疑你想加一个 GROUP BY products.name 从句到查询的结尾。

    这将导致所有匹配值为的行 products.name 将折叠成一行,但对于 产品名称 .