(O.T.) Sentencia SQL COMPLICADA

22/06/2006 - 16:58 por Guille | Informe spam
Hola a todos.

Tengo dos tablas "Ventas" y "Almacen"

la tabla Ventas, tiene los siguientes registros:

Codigo_Articulo Unidades_Vendidas
0001 5
0001 7


Por otro lado tengo la tabla "Almacen" que tiene el siguiente registro:

Codigo_Articulo Stock_Actual
0001 42


El objetivo es actualizar el stock de la tabla Almacen con las
Unidades_Vendidas de la tabla Ventas, para ello ponía esta sentencia
(SQL Server 2000)


UPDATE Almacen SET Stock_Actual = Stock_Actual -
Ventas.Unidades_Vendidas FROM Ventas WHERE
Almacen.Codigo_Articulo = Ventas.Codigo_Articulo



Esta sentencia funcionaba muy bien cuando la tabla ventas tiene
articulos distintos, pero cuando existen dos registros con el codigo de
articulo igual (como en el caso del ejemplo) solo me actualiza el stock
con las ventas del ULTIMO registro de la tabla Ventas, es decir, en el
caso del ejemplo, la tabla Almacen quedaria asi:


Codigo_Articulo Stock_Actual
0001 35

cuando deberia quedar asi:

Codigo_Articulo Stock_Actual
0001 30

¿Como podria solucionar esto?
Solo puede ser por sentencias SQL.

¿Alguna sugerencia?

De antemano muchas gracias a todos.

Saludos:

Guille :-)
Cádiz (España)
 

Leer las respuestas

#1 Alfredo Novoa
22/06/2006 - 17:54 | Informe spam
On Thu, 22 Jun 2006 16:58:56 +0200, Guille wrote:


El objetivo es actualizar el stock de la tabla Almacen con las
Unidades_Vendidas de la tabla Ventas, para ello ponía esta sentencia
(SQL Server 2000)


UPDATE Almacen SET Stock_Actual = Stock_Actual -
Ventas.Unidades_Vendidas FROM Ventas WHERE
Almacen.Codigo_Articulo = Ventas.Codigo_Articulo



Te has olvidado de poner el Sum()

UPDATE Almacen SET Stock_Actual = Stock_Actual -
Sum(Ventas.Unidades_Vendidas) FROM Ventas WHERE
Almacen.Codigo_Articulo = Ventas.Codigo_Articulo

De todas formas sería mejor usar un trigger para esto.


Saludos
Alfredo

Preguntas similares