我有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