67 - Varias tablas (natural join) |
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;