65 - Varias tablas (right 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 "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".