create table alumno (id integer, nombre varchar(255)) primary key (id);
create table materia (id integer, nombre varchar(255)) primary key (id);
create table inscripcion(materia_id integer, alumno_id integer) primary key (materia_id, alumno_id);
Queremos conocer las materias en las cuales no hay inscripto ningún alumno.
Inscribimos a Emiliano en Matemática, a Luis en Lengua, y a Martin en ninguna materia. Por lo tanto nadie está inscripto en Gimnasia
insert into alumno (id, nombre) values (1, 'Emiliano');
insert into alumno (id, nombre) values (2, 'Luis');
insert into alumno (id, nombre) values (3, 'Martin');
insert into materia (id, nombre) values (1, 'Matemática');
insert into materia (id, nombre) values (2, 'Lengua');
insert into materia (id, nombre) values (3, 'Gimnasia');
insert into inscripcion (materia_id, alumno_id) values (1, 1);
insert into inscripcion (materia_id, alumno_id) values (2, 2);
Ejecutamos la query
SELECT m.nombre
FROM materia m
LEFT JOIN inscripcion i ON m.id = i.materia_id
WHERE i.materia_id is null;
y resulta en
+-----------+
| nombre |
+-----------+
| Gimnasia |
+-----------+
No hay comentarios.:
Publicar un comentario