Problema:
Un club dicta clases de distintos deportes. En una tabla llamada "socios" guarda los datos de sus
socios y en una tabla denominada "inscriptos" almacena la información necesaria para las
inscripciones de los socios a los distintos deportes.
1- Elimine las tablas si existen.
2- Cree las tablas:
create table socios(
documento char(8) not null,
nombre varchar(30),
domicilio varchar(30),
primary key(documento)
);
create table inscriptos(
documento char(8) not null,
deporte varchar(15) not null,
año year,
matricula char(1), /*si esta paga ='s' sino 'n'*/
primary key(documento,deporte,año)
);
3- Ingrese algunos registros para ambas tablas:
insert into socios values('22333444','Juan Perez','Colon 234');
insert into socios values('23333444','Maria Lopez','Sarmiento 465');
insert into socios values('24333444','Antonio Juarez','Caseros 980');
insert into socios values('25333444','Marcelo Pereyra','Sucre 349');
insert into inscriptos values ('22333444','natacion','2005','s');
insert into inscriptos values ('22333444','natacion','2006','n');
insert into inscriptos values ('23333444','natacion','2005','s');
insert into inscriptos values ('23333444','tenis','2006','s');
insert into inscriptos values ('23333444','natacion','2006','s');
insert into inscriptos values ('24333444','tenis','2006','n');
insert into inscriptos values ('24333444','basquet','2006','n');
4- Realice un "left join" de la tabla "socios" a "inscriptos" buscando coincidencia de "documento":
select s.documento,nombre,i.deporte,i.año,i.matricula
from socios as s
left join inscriptos as i
on s.documento=i.documento;
Note que el socio que no está inscripto en ningún deporte tiene la fila seteada a "null".
5- Realice un "right join" para obtener la misma salida anterior:
select s.documento,nombre,i.deporte,i.año,i.matricula
from inscriptos as i
right join socios as s
on s.documento=i.documento;
6- Ingrese una inscripción de alguien que no sea socio (documento que no se encuentre en la
tabla "socios"):
insert into inscriptos values ('26333444','basquet','2006','n');
7- Realice un "right join" desde la tabla "socios" a "inscriptos" buscando coincidencia de documento:
select nombre,i.documento,deporte,i.año,i.matricula
from socios as s
right join inscriptos as i
on s.documento=i.documento;
Note que la persona con documento "26333444" no se encuentra en "socios", la columna "nombre"
(correspondiente a la tabla "socios") contiene "null".