Problema:
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 la cantidad de cuotas pagas (desde 0 hasta 10 que es el total por todo el año), y una tabla
denominada "socios" en la que guarda los datos personales de cada socio.
1- Borre las tablas si existen y luego cree las tablas:
drop table if exists socios;
drop table if exists inscriptos;
create table socios(
numero int auto_increment,
documento char(8),
nombre varchar(30),
domicilio varchar(30),
primary key (numero)
);
create table inscriptos (
numerosocio int not null,
deporte varchar(20) not null,
cuotas smallint,
primary key(numerosocio,deporte)
);
2- Ingrese algunos registros:
insert into socios(documento,nombre,domicilio) values('23333333','Alberto Paredes','Colon 111');
insert into socios(documento,nombre,domicilio) values('24444444','Carlos Conte','Sarmiento 755');
insert into socios(documento,nombre,domicilio) values('25555555','Fabian Fuentes','Caseros 987');
insert into socios(documento,nombre,domicilio) values('26666666','Hector Lopez','Sucre 344');
insert into inscriptos values(1,'tenis',1);
insert into inscriptos values(1,'basquet',2);
insert into inscriptos values(1,'natacion',1);
insert into inscriptos values(2,'tenis',9);
insert into inscriptos values(2,'natacion',1);
insert into inscriptos values(2,'basquet',default);
insert into inscriptos values(2,'futbol',2);
insert into inscriptos values(3,'tenis',8);
insert into inscriptos values(3,'basquet',9);
insert into inscriptos values(3,'natacion',0);
insert into inscriptos values(4,'basquet',10);
3- Muestre el número de socio, el nombre del socio y el deporte en que está inscripto con un join de
ambas tablas.
select numero,nombre,deporte
from socios as s
join inscriptos as i
on numerosocio=numero;
4- Muestre los socios que serán compañeros en tenis y también en natación (empleando
subconsulta)
select nombre
from socios
join inscriptos as i
on numero=numerosocio
where deporte='natacion' and
numero= any
(select numerosocio
from inscriptos as i
where deporte='tenis');
5- Vea si el socio 1 se ha inscripto en algún deporte en el cual se haya inscripto el socio 2.
select deporte
from inscriptos as i
where numerosocio=1 and
deporte= any
(select deporte
from inscriptos as i
where numerosocio=2);
6- Obtenga el mismo resultado anterior pero empleando join.
select i1.deporte
from inscriptos as i1
join inscriptos as i2
on i1.deporte=i2.deporte
where i1.numerosocio=1 and
i2.numerosocio=2;
7- Muestre los deportes en los cuales el socio 2 pagó más cuotas que ALGUN deporte en los que se
inscribió el socio 1.
select deporte
from inscriptos as i
where numerosocio=2 and
cuotas>any
(select cuotas
from inscriptos
where numerosocio=1);
8- Muestre los deportes en los cuales el socio 2 pagó más cuotas que TODOS los deportes en que se
inscribió el socio 1.
select deporte
from inscriptos as i
where numerosocio=2 and
cuotas>all
(select cuotas
from inscriptos
where numerosocio=1);