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','2015','s');
insert into inscriptos values ('22333444','natacion','2016','n');
insert into inscriptos values ('23333444','natacion','2015','s');
insert into inscriptos values ('23333444','tenis','2016','s');
insert into inscriptos values ('23333444','natacion','2016','s');
insert into inscriptos values ('24333444','tenis','2016','n');
insert into inscriptos values ('24333444','basquet','2016','n');
4- Realice un "natural join" de ambas tablas:
select nombre,i.*
from socios as s
natural join inscriptos as i;
5- Obtenga el mismo resultado con un "join":
select nombre,i.*
from socios as s
join inscriptos as i
on s.documento=i.documento;
6- Realice un "left join" de la tabla "socios" a "inscriptos" buscando coincidencia de "documento":
select nombre,i.*
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".
7- Realice un "natural left join" para obtener la misma salida anterior:
select nombre,i.*
from socios as s
natural left join inscriptos as i;
8- Realice un "natural right join" para obtener la misma salida anterior:
select nombre,i.*
from inscriptos as i
natural right join socios as s;