2014-03-12 57 views
0

我有一个查询,必须做到以下几点:车股票收益查询

  • 选择从购物车中的所有项目与ID = 0
  • 更新相应的产品与选定的数量

我的查询当同一产品的购物车中有多个商品时停止工作。例如:

product1|quantity X 
product2|quantity Y 
product1|quantity Z 

这里的查询(我认为表结构与查询本身很清楚):

UPDATE ct_products AS P 
JOIN ct_shopping_cart_products AS SCP ON (SCP.product = P.id) 
SET P.stockQty = P.stockQty + SCP.qty, -- update product stock QTY by QTY from cart products 
SCP.qty=0 -- reset QTY on the product in shopping cart 
WHERE SCP.cart=0; -- only from carts with ID=0 

我不太明白的内部运作的加入在更新舒服,所以我想这可能是一个非常简单的问题,专家可以轻松解决。

回答

0

试试这个

UPDATE ct_products AS P 
JOIN ct_shopping_cart_products AS SCP ON (SCP.product = P.id) 
JOIN (SELECT product,cart,SUM(qty) as qty FROM ct_shopping_cart_products 
     GROUP BY product,cart) AS SCP2 ON (SCP.product = SCP2.product 
            AND SCP.cart = SCP2.cart) 
SET 
P.stockQty = P.stockQty + SCP2.qty, 
SCP.qty=0 
WHERE SCP.cart=0 

这个查询将使用SCP2.qty这是数量分组方式,产品和购物车的SUM更新。

sqlFiddle

+0

谢谢你,天啊!我从来没有想过这样的事情自己... – Marius

+0

我以为你的查询会做到这一点,但我猜不是。试错。 –