Quiero actualizar un registro de una columna y no todos
Publicado por Marcio (2 intervenciones) el 30/10/2014 19:31:24
Buenas Tardes, lo que pasa es que quiero actualizar solamente un registro de la tabla pero no me toma una condicion que puse en una subconsulta, alguen puede ayudarme?
DECLARE @estadoarrien varchar(100)
set @estadoarrien = 'Devuelto'
IF EXISTS(SELECT * FROM tbl_arriendo a
WHERE a.estado = @estadoarrien AND a.idcliente = 2)
BEGIN
PRINT 'Esta pelicula ya esta devuelta'
END
ELSE
BEGIN
UPDATE tbl_pelicula set stock_actual=stock_actual+(select d.cantidad from tbl_cliente as c
inner join tbl_arriendo as a on a.idcliente=c.idcliente
inner join tbl_det_arriendo as d on d.idarriendo=a.idarriendo
inner join tbl_pelicula as p on p.idpelicula=d.idpelicula
where c.idcliente=2)
update tbl_arriendo set estado=@estadoarrien where estado in (select a.estado from tbl_cliente as c
inner join tbl_arriendo as a on a.idcliente=c.idcliente
inner join tbl_det_arriendo as d on d.idarriendo=a.idarriendo
inner join tbl_pelicula as p on p.idpelicula=d.idpelicula
where c.idcliente=2 and a.estado<>@estadoarrien)
PRINT 'Devolucion exitosa'
END
DECLARE @estadoarrien varchar(100)
set @estadoarrien = 'Devuelto'
IF EXISTS(SELECT * FROM tbl_arriendo a
WHERE a.estado = @estadoarrien AND a.idcliente = 2)
BEGIN
PRINT 'Esta pelicula ya esta devuelta'
END
ELSE
BEGIN
UPDATE tbl_pelicula set stock_actual=stock_actual+(select d.cantidad from tbl_cliente as c
inner join tbl_arriendo as a on a.idcliente=c.idcliente
inner join tbl_det_arriendo as d on d.idarriendo=a.idarriendo
inner join tbl_pelicula as p on p.idpelicula=d.idpelicula
where c.idcliente=2)
update tbl_arriendo set estado=@estadoarrien where estado in (select a.estado from tbl_cliente as c
inner join tbl_arriendo as a on a.idcliente=c.idcliente
inner join tbl_det_arriendo as d on d.idarriendo=a.idarriendo
inner join tbl_pelicula as p on p.idpelicula=d.idpelicula
where c.idcliente=2 and a.estado<>@estadoarrien)
PRINT 'Devolucion exitosa'
END
Valora esta pregunta


0