99 - Subconsulta (update - delete) |
Un club dicta clases de distintos deportes a sus socios. El club tiene una tabla llamada "inscriptos" en la cual almacena el número de "socio", el código del deporte en el cual se inscribe y si la matricula está o no paga, y una tabla denominada "socios" en la que guarda los datos personales de cada socio. 1- Elimine las tablas si existen: if object_id('inscriptos') is not null drop table inscriptos; if object_id('socios') is not null drop table socios; 2- Cree las tablas: create table socios( numero int identity, documento char(8), nombre varchar(30), domicilio varchar(30), primary key (numero) ); create table inscriptos ( numerosocio int not null, deporte varchar(20) not null, matricula char(1),-- 'n' o 's' primary key(numerosocio,deporte), constraint FK_inscriptos_socio foreign key (numerosocio) references socios(numero) ); 3- Ingrese algunos registros: insert into socios values('23333333','Alberto Paredes','Colon 111'); insert into socios values('24444444','Carlos Conte','Sarmiento 755'); insert into socios values('25555555','Fabian Fuentes','Caseros 987'); insert into socios values('26666666','Hector Lopez','Sucre 344'); insert into inscriptos values(1,'tenis','s'); insert into inscriptos values(1,'basquet','s'); insert into inscriptos values(1,'natacion','s'); insert into inscriptos values(2,'tenis','s'); insert into inscriptos values(2,'natacion','s'); insert into inscriptos values(2,'basquet','n'); insert into inscriptos values(2,'futbol','n'); insert into inscriptos values(3,'tenis','s'); insert into inscriptos values(3,'basquet','s'); insert into inscriptos values(3,'natacion','n'); insert into inscriptos values(4,'basquet','n'); 4- Actualizamos la cuota ('s') de todas las inscripciones de un socio determinado (por documento) empleando subconsulta. 5- Elimine todas las inscripciones de los socios que deben alguna matrícula. 5 registros eliminados.Ver solución
if object_id('inscriptos') is not null drop table inscriptos; if object_id('socios') is not null drop table socios; create table socios( numero int identity, documento char(8), nombre varchar(30), domicilio varchar(30), primary key (numero) ); create table inscriptos ( numerosocio int not null, deporte varchar(20) not null, matricula char(1),-- 'n' o 's' primary key(numerosocio,deporte), constraint FK_inscriptos_socio foreign key (numerosocio) references socios(numero) ); insert into socios values('23333333','Alberto Paredes','Colon 111'); insert into socios values('24444444','Carlos Conte','Sarmiento 755'); insert into socios values('25555555','Fabian Fuentes','Caseros 987'); insert into socios values('26666666','Hector Lopez','Sucre 344'); insert into inscriptos values(1,'tenis','s'); insert into inscriptos values(1,'basquet','s'); insert into inscriptos values(1,'natacion','s'); insert into inscriptos values(2,'tenis','s'); insert into inscriptos values(2,'natacion','s'); insert into inscriptos values(2,'basquet','n'); insert into inscriptos values(2,'futbol','n'); insert into inscriptos values(3,'tenis','s'); insert into inscriptos values(3,'basquet','s'); insert into inscriptos values(3,'natacion','n'); insert into inscriptos values(4,'basquet','n'); update inscriptos set matricula='s' where numerosocio= (select numero from socios where documento='25555555'); delete from inscriptos where numerosocio in (select numero from socios as s join inscriptos on numerosocio=numero where matricula='n');