99 - Subconsulta (update - delete) |
Trabajamos con las tablas "libros" y "editoriales" de una librería.
Eliminamos las tablas si existen y las creamos:
if object_id('libros') is not null drop table libros; if object_id('editoriales') is not null drop table editoriales; create table editoriales( codigo tinyint identity, nombre varchar(30), primary key (codigo) ); create table libros ( codigo int identity, titulo varchar(40), autor varchar(30), codigoeditorial tinyint, precio decimal(5,2), primary key(codigo) );
Ingresamos algunos registros:
insert into editoriales values('Planeta'); insert into editoriales values('Emece'); insert into editoriales values('Paidos'); insert into editoriales values('Siglo XXI'); insert into libros values('Uno','Richard Bach',1,15); insert into libros values('Ilusiones','Richard Bach',2,20); insert into libros values('El aleph','Borges',3,10); insert into libros values('Aprenda PHP','Mario Molina',4,40); insert into libros values('Poemas','Juan Perez',1,20); insert into libros values('Cuentos','Juan Perez',3,25); insert into libros values('Java en 10 minutos','Marcelo Perez',2,30);
Actualizamos el precio de todos los libros de editorial "Emece" incrementándolos en un 10%:
update libros set precio=precio+(precio*0.1) where codigoeditorial= (select codigo from editoriales where nombre='Emece');
Eliminamos todos los libros de las editoriales que tiene publicados libros de "Juan Perez":
delete from libros where codigoeditorial in (select e.codigo from editoriales as e join libros on codigoeditorial=e.codigo where autor='Juan Perez');