2014-03-12 94 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

我以爲你的查詢會做到這一點,但我猜不是。試錯。 –