SQL - update subconsultas

   
Vista:

update subconsultas

Publicado por apis (8 intervenciones) el 09/01/2008 18:16:01
Quiero saber si se puedo hacer esto

tengo una tabla de ventas con su respectivo detalle de ventas
y otra de articulos
la tabla detalledeventas tiene un campo en comun con articulos
Por ejemplo detalleventas.idArt_int
y articulos.idArt_int

lo que quiero hacer es que al cancelar la venta, todos los articulos que estan el detalle de esa venta actualicen la existencia de ese articulo

pero no consigo una consulta que me lo haga, puse esta consulta

UPDATE ArtCodigos
SET existencia_Dec = existencia_Dec + D.cantidad_Dec
FROM DetalleVentas D
WHERE idVenta_Int = @idVenta_Int
AND D.idArt_Int = ArtCodigos.dArt_Int

pero lo que hace es que solo me actualiza la existencia del primer articulo :(

si alguien sabe como hacerlo se lo agradecere mucho, si no pues usare cursores para recorrer cada detalle de venta y actualizar uno por uno la existencia de los articulos
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

RE:update subconsultas

Publicado por apis (8 intervenciones) el 09/01/2008 18:24:34
el error esta en que por ejemplo tengo en mi tabla de detalle ventas algo asi

articulos
articulo cantidad
----------------------------
articulo 1 10
articulo 2 20

detalle ventas
articulo cantidad
----------------------------
articulo 1 1
articulo 2 2
articulo 1 9

despues de la venta me queda asi la existencia de articulos
articulos
articulo cantidad
----------------------------
articulo 1 0
articulo 2 18
luego cancelo la venta con ese update de mi anterior post

y con el update como lo tengo me deja los datos asi
articulo cantidad
----------------------------
articulo 1 1
articulo 2 20

no puedo poner un group by en ese update y con subqueryes no se como hacerlo
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:update subconsultas

Publicado por Isaias (5073 intervenciones) el 10/01/2008 20:15:10
Debes hacer un UPDATE desde un FROM, pero utilizando un JOIN

UPDATE ArtCodigos
SET existencia_Dec = E.existencia_Dec + D.cantidad_Dec
FROM DetalleVentas D
JOIN ArtCodigos ON <campos comunes>

¿No seria bueno, programarlo en el TRIGGER de actualizacion (Cancela la Venta)?
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:update subconsultas

Publicado por apis (8 intervenciones) el 11/01/2008 16:58:16
Tambien estaba pensando ponerlo en un trigger, ahorita ese lo uso en un stored procedure, queria probarlo asi si funcionaba en el stored procedure y luego pasarlo al trigger del update de la tabla venta.
Ya habia probado con eso pero tampoco funciono, porque pasa lo mismo, solo me toma la primer cantidad, tambien he pensado agregarle otro campo al detalle de venta que diga estatus y con un trigger al actualizarse que se descuente probare esa opcion y espero que funcione
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:update subconsultas

Publicado por stella (16 intervenciones) el 12/01/2008 16:20:21
Algo + o - así no te funciona:

update articulos a set
cantidad = cantidad + ( select count(*) from ventas
where cdventa = @cod_Venta
and cdarticulo = a.cdarticulo
)
where cdarticulo in (select cdarticulo from ventas
where cdventa = @cod_Venta)

Saludos
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