我有3个表(简体):SQL服务器更新加入
tblOrder(OrderId INT)
tblVariety(VarietyId INT,Stock INT)
tblOrderItem(OrderId,VarietyId,Quantity INT)
如果我下订单,我用这个下降的库存水平:
UPDATE tblVariety
SET tblVariety.Stock = tblVariety.Stock - tblOrderItem.Quantity
FROM tblVariety
INNER JOIN tblOrderItem ON tblVariety.VarietyId = tblOrderItem.VarietyId
INNER JOIN tblOrder ON tblOrderItem.OrderId = tblOrder.OrderId
WHERE tblOrder.OrderId = 1
一切都很好,直到有tblOrderItem中的两行与同一OrderId的VarietyId相同。在这种情况下,只有一个行用于库存更新。它似乎在某种程度上做了GROUP BY VarietyId。
任何人都可以点亮一下吗?非常感谢。
应该不可能有相同的品种/订购组合? 也就是说,如果一个订单的同一品种出现大于1,那么这是在数量列中捕获的,而不是多行? – gbn 2010-08-12 13:19:15
技术上,是的。但也有其他列tblOrderItem这意味着多条线可以进入这些相同的基本数字(例如日期字段) – Geoff 2010-08-12 13:29:11