67 - Varias tablas (natural join)


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 "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;



 


Retornar