2011-03-07 127 views
0
UPDATE product, 
     claimdetail 
    SET product.ProductQuantity = (product.ProductQuantity - claimdetail.quantity) 
WHERE product.ProductId = claimdetail.productcode 

上面的代码是当员工使用产品时声称它有问题从股票中扣除产品。如果员工使用相同的产品2次,只扣除一次,我该如何解决?SQL语句MySQL

claimdetail在许多记录中有产品代码“4712893150132”它只扣除一条记录应扣除所有记录。

+2

这是非常相似,你的最后一个问题。这又不是很理解。请修改。也许提供表架构和示例数据? – Simon 2011-03-07 04:54:04

回答

1
UPDATE product 
JOIN 
(
SELECT productcode, SUM(quantity) SUMClaim 
FROM claimdetail 
GROUP BY productcode 
) claims on claims.productcode = product.ProductId 
SET product.ProductQuantity = product.ProductQuantity - claims.SUMClaim 
0

更新产品 SET product.ProductQuantity =(product.ProductQuantity - claimdetail.quantity) WHERE product.ProductId = claimdetail.productcode

+0

它有一个小问题的代码可以从股票中扣除,但如果它有相同的claimdetail.productcode它只使用第一行来扣除它,就像我买ICECREAM 2 PIECE AND IT PUT INTO 2 RECORD它只扣除一个谢谢 – tee 2011-03-07 05:08:08