如何在数据库中获取多列的Mysql SUM

我想通过对购物车中每件商品的价值求和来计算购物车中的总产品。</ p>

我正在使用此查询:</ strong> </ p>

  SELECT *,SUM(quantity)OVER(PARTITION BY product_id ORDER BY id  )AS TotalProducts 
FROM购物车WHERE user_id ='$ user_id';
</ code> </ pre>

获取错误:</ strong> </ p>


SQL语法; 检查与MariaDB服务器
版本对应的手册,以便在'(PARTITION BY product_id
ORDER BY id)附近使用正确的语法</ p>
</ blockquote>

使用数据库架构进行编辑</ strong> </ p>

  id |  product_id | 数量|  user_id 
1 | 37 | 2 | 23847
2 | 70 | 2 | 23847
</ code> </ pre>

我看不出我做错了什么?</ p>
</ div>

展开原文

原文

I want to calculate total products in cart for one user by summing values for each product in cart.

I'm using this query :

    SELECT *, SUM(quantity) OVER (PARTITION BY product_id ORDER BY id) AS TotalProducts 
    FROM cart WHERE user_id ='$user_id';

Getting error:

SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(PARTITION BY product_id ORDER BY id)

EDIT with DB schema

id | product_id | quantity | user_id
1  | 37         | 2        | 23847
2  | 70         | 2        | 23847

I can't see what I'm doing wrong?

dongyinpan9284
dongyinpan9284 逗号删除了,仍然
大约 3 年之前 回复
dt2002
dt2002 作为TotalProducts,<<<删除那个逗号,它是一个错字。
大约 3 年之前 回复

2个回答



我不熟悉MariaDB语法,你没有展示你的架构,但这是我的回答:< / p>

  SELECT c。*,
SUM(c.quantity)asTotalProducts
FROM cart c
WHERE c.user_id ='$ user_id'
GROUP BY c.user_id

</ code> </ pre>

或者,如果您想要每个产品的总数,您可以使用:</ p>

  SELECT c。*,

SUM(c.quantity)为“TotalProducts”
FROM cart c
WHERE c.user_id ='$ user_id'
GROUP BY c.user_id,c.product_id
</ code> </ pre>
</ DIV>

展开原文

原文

I'm not familiar with the MariaDB syntax, and you didn't show your schema, but here's my shot at an answer:

SELECT c.*,
    SUM(c.quantity) as `TotalProducts`
FROM cart c
WHERE c.user_id = '$user_id'
GROUP BY c.user_id

Or, if you want a total per product, you could use:

SELECT c.*,
    SUM(c.quantity) as `TotalProducts`
FROM cart c
WHERE c.user_id = '$user_id'
GROUP BY c.user_id, c.product_id

dongyan8929
dongyan8929 很高兴它对你有效。 谢谢你的接受!
大约 3 年之前 回复
dongpaocuan7498
dongpaocuan7498 这是对的。
大约 3 年之前 回复



在MySQL中,您可以使用相关的子查询:</ p>

  SELECT c。*  ,
(SELECT SUM(c2.quantity)
FROM cart c2
WHERE c2.user_id = c.user_id AND
c2.product_id = c.product_id AND
c2.id&lt; = c.id
)作为TotalProducts
FROM购物车c
WHERE user_id ='$ user_id';
</ code> </ pre>
</ div>

展开原文

原文

In MySQL, you can use a correlated subquery:

SELECT c.*,
       (SELECT SUM(c2.quantity)
        FROM cart c2
        WHERE c2.user_id = c.user_id AND
              c2.product_id = c.product_id AND
              c2.id <= c.id
       ) as TotalProducts 
FROM cart c
WHERE user_id = '$user_id';

dongzun9958
dongzun9958 。 。 。 您的原始配方具有product_id`分区,这是实现的。 如果您不打算这样做,请提出另一个问题并提供样本数据和所需结果。
大约 3 年之前 回复
dongpan3001
dongpan3001 是的,你确实有错别字。 否则该功能有效,但我没有得到正确的结果。 用户有2 X product_id = 37 + 2 X product_id = 70而我只得到2.我应该得到4。
大约 3 年之前 回复
dongpiao0731
dongpiao0731 为什么不直接使用组和总和? 还有一些小错字:produt和AS
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问