Sum列多次

时间:2012-08-29 16:45:35

标签: mysql sql sum

我有一些包含一些产品的表格。他们每个人都有一个价格。 当用户看到他的篮子时,我想显示他选择的所有产品的总量。

我的问题是:是否可以通过SQL执行此操作或在PHP中请求后执行此操作?

其实我的要求是:

SELECT SUM(PRICE) FROM products WHERE ID IN(65,68,68);

我会考虑两个68.

谢谢你, 弗洛里安

3 个答案:

答案 0 :(得分:5)

理想情况下,在这种情况下你不会使用IN(事实上,你无法以这种方式工作)。你需要的是一个JOIN到cart_products表(或类似的):

SELECT SUM(PRICE) 
FROM 
  cart_products
  JOIN products ON products.id = cart_products.product_id
WHERE 
  cart_products.cart_id = ?

然后传入当前会话的cart_id。

请注意,如果您的购物车有qty选项,则可以将其用作SUM表达式:

SUM(products.PRICE * cart_products.qty)

答案 1 :(得分:0)

您可以动态生成SQL,最终得到类似的结果:

SELECT SUM(PRICE)
FROM
(
    SELECT PRICE FROM products WHERE id = 65
    UNION ALL
    SELECT PRICE FROM products WHERE id = 68
    UNION ALL
    SELECT PRICE FROM products WHERE id = 68
) x

但我想知道是否真的有意义。大概你已经在页面上显示了单价,所以你不能只用你已经拥有的单价加起来吗?

答案 2 :(得分:0)

我认为一种方法是在篮子中插入所有物品的时间表,然后加入它并获得产品。所以,如果你有三次产品,你将把它插入三次,连接将是三次,所以当你得到总和时,将获得正确的导入。

如果您从PHP

传递每个Id作为参数,则为此

我不确定MySQL语法,但这应该有用

CREATE TEMPORARY TABLE BasketProducts(Id INT UNSIGNED NOT NULL)

Insert into BasketProducts values (--Insert everyId)

然后进行加入

Select sum(P.price) from Products P
inner join BasketProducts  BP on P.Id = BP.Id