У меня есть 3 таблицы (упрощенные):
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 не будет двух строк с тем же VarietyId для того же OrderId. В этом случае для обновления запасов используется только одна из строк. Кажется, что-то делает GROUP BY VarietyId.
Может ли кто-нибудь пролить свет? Большое спасибо.