SQL Server - Actualizacion con Inner join

 
Vista:

Actualizacion con Inner join

Publicado por Juan Sosa (2 intervenciones) el 01/10/2010 04:35:26
Hola, Amigos

Este es mi caso: Tengo una tabla Articulos a la cual le quiero sumar un retorno de articulos provenientes de la cancelacion de una venta, esto lo estoy haciento con un store procedure usando inner join, en SQL SERVER 2005

Venta Articulo
=================================================================
Articulo id1 Qty. 3 Articulo id1 Qty.

Articulo id1 Qty. 2 Articulo id1 Qty.

Articulo id4 Qty. 1 Articulo id4 Qty.

--------------------------------------------------------------------------------------------------

UPDATE Articulo

SET Cantidad = Articulo.Cantidad +(TransaccionDetalle.Cantidad)

FROM TransaccionDetalle

INNER JOIN
Articulo
ON TransaccionDetalle.IdArticulo = Articulo.IdArticulo
where IdTransaccion = @IdTransaccion

El problema es que del articulo que se repite solo me suma la primera linea, y necesito que me sume las dos al inventario o sea Qty.5

Gracias adelantadas por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 4
Ha disminuido su posición en 43 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Actualizacion con Inner join

Publicado por Leonardo Josué (79 intervenciones) el 01/10/2010 16:28:36
Buenos días Juan Sosa.

Por lo que comentas en tu post creo que tienes que hacer una agrupación de tu tabla TransaccionDetalles, pero no me quedó muy clara cual es la estructura de tus tablas, por lo que es posible que la consulta que te propongo tenga algún error, sería cuestión de que la revises. Intenta con esto:

UPDATE Articulo
SET Cantidad = A.Cantidad + T.Cantidad
FROM
(
select idArticulo, sum(cantidad) as cantidad from TransaccionDetalle T
where IdTransaccion = @IdTransaccion
group by idTransaccion, idArticulo
) T
INNER JOIN Articulo A ON T.IdArticulo = A.IdArticulo

Si observas el único cambio con respecto a tu consulta es que en lugar de tomar directamente FROM TransaccionDetalle haces primero una agrupación por idTransaccion e idArticulo, para obtener la suma que tienes que agregar. El resto queda igual.

Saludos y espero tus comentarios.
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualizacion con Inner join

Publicado por Juan Sosa (2 intervenciones) el 01/10/2010 19:27:23
Perfecto......1000,000.00 de Gracias, hermano tenia dos dias tratando de hacer esto, ya que no soy un programador experto gracias de verdad, aqui el codigo que me funciono, justamente como me dijiste.

UPDATE Articulo


SET Cantidad = Articulo.Cantidad +TransaccionDetalle.Cantidad

FROM

(
SELECT IdArticulo, sum (Cantidad) as Cantidad
FROM TransaccionDetalle
WHERE IdTransaccion = @IdTransaccion
group by IdTransaccion, IdArticulo
)

TransaccionDetalle INNER JOIN Articulo
ON TransaccionDetalle.IdArticulo = Articulo.IdArticulo


1 Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar