Primer problema:
Un club dicta clases de distintos deportes. Almacena la información en una tabla llamada "deportes"
en la cual incluye el nombre del deporte y el nombre del profesor y en otra tabla llamada
"inscriptos" que incluye el documento del socio que se inscribe, el deporte y si la matricula está
paga o no.
1- Cree las tablas:
create table deportes(
codigo serial,
nombre varchar(30),
profesor varchar(30),
primary key (codigo)
);
create table inscriptos(
documento char(8),
codigodeporte smallint not null,
matricula char(1) --'s'=paga 'n'=impaga
);
2- Ingrese algunos registros para ambas tablas:
insert into deportes(nombre,profesor) values('tenis','Marcelo Roca');
insert into deportes(nombre,profesor) values('natacion','Marta Torres');
insert into deportes(nombre,profesor) values('basquet','Luis Garcia');
insert into deportes(nombre,profesor) values('futbol','Marcelo Roca');
insert into inscriptos values('22222222',3,'s');
insert into inscriptos values('23333333',3,'s');
insert into inscriptos values('24444444',3,'n');
insert into inscriptos values('22222222',2,'s');
insert into inscriptos values('23333333',2,'s');
insert into inscriptos values('22222222',4,'n');
insert into inscriptos values('22222222',5,'n');
3- Muestre todos la información de la tabla "inscriptos", y consulte la tabla "deportes" para
obtener el nombre de cada deporte (6 registros)
4- Empleando un "left join" con "deportes" obtenga todos los datos de los inscriptos (7 registros)
5- Obtenga la misma salida anterior empleando un "rigth join".
6- Muestre los deportes para los cuales no hay inscriptos, empleando un "left join" (1 registro)
7- Muestre los documentos de los inscriptos a deportes que no existen en la tabla "deportes" (1
registro)
8- Emplee un "full join" para obtener todos los datos de ambas tablas, incluyendo las inscripciones
a deportes inexistentes en "deportes" y los deportes que no tienen inscriptos (8 registros)
Ver solución
drop table if exists deportes;
drop table if exists inscriptos;
create table deportes(
codigo serial,
nombre varchar(30),
profesor varchar(30),
primary key (codigo)
);
create table inscriptos(
documento char(8),
codigodeporte smallint not null,
matricula char(1) --'s'=paga 'n'=impaga
);
insert into deportes(nombre,profesor) values('tenis','Marcelo Roca');
insert into deportes(nombre,profesor) values('natacion','Marta Torres');
insert into deportes(nombre,profesor) values('basquet','Luis Garcia');
insert into deportes(nombre,profesor) values('futbol','Marcelo Roca');
insert into inscriptos values('22222222',3,'s');
insert into inscriptos values('23333333',3,'s');
insert into inscriptos values('24444444',3,'n');
insert into inscriptos values('22222222',2,'s');
insert into inscriptos values('23333333',2,'s');
insert into inscriptos values('22222222',4,'n');
insert into inscriptos values('22222222',5,'n');
select documento,d.nombre,matricula
from inscriptos as i
join deportes as d
on codigodeporte=codigo;
select documento,d.nombre,matricula
from inscriptos as i
left join deportes as d
on codigodeporte=codigo;
select documento,d.nombre,matricula
from deportes as d
right join inscriptos as i
on codigodeporte=codigo;
select nombre
from deportes as d
left join inscriptos as i
on codigodeporte=codigo
where codigodeporte is null;
select documento
from inscriptos as i
left join deportes as d
on codigodeporte=codigo
where codigo is null;
select documento,nombre,profesor,matricula
from inscriptos as i
full join deportes as d
on codigodeporte=codigo;