Tengo 3 tablas (simplificado):SQL Server con combinación interna
tblOrder(OrderId INT)
tblVariety(VarietyId INT,Stock INT)
tblOrderItem(OrderId,VarietyId,Quantity INT)
Si realizo un pedido, se me cae el nivel de stock de utilizar este:
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
Todo bien, hasta que haya hay dos filas en tblOrderItem con el mismo VarietyId para el mismo OrderId. En este caso, solo una de las filas se usa para la actualización de stock. Parece que está haciendo un GROUP BY VarietyId allí de alguna manera.
¿Alguien puede arrojar algo de luz? Muchas gracias.
en caso de que sea imposible tener la misma combinación/orden de la variedad? Es decir, si aparece la misma Variedad> 1 para una orden, esta se captura en la columna Cantidad, no en varias filas? – gbn
Técnicamente, sí. Pero hay otras columnas en tblOrderItem lo que significa que más de una línea puede entrar con esos mismos números básicos (un campo de fecha por ejemplo) – Geoff