). Considere as tabelas a seguir, em um banco de dados relacional, contendo informações sobre discentes (alunos), cursos e vínculos entre elas:
Curso (IdCurso, NomeCurso)
Discente (IdDiscente, NomeDiscente, IdCurso)
Pretende-se consultar os nomes dos cursos (NomeCurso) que não possuem discentes matriculados. Para obter este resultado, qual a consulta correta em SQL?
Discente (IdDiscente, NomeDiscente, IdCurso)
Pretende-se consultar os nomes dos cursos (NomeCurso) que não possuem discentes matriculados. Para obter este resultado, qual a consulta correta em SQL?
Passo 1
O enunciado nos dá duas tabelas:
Curso ,
e
Discente ,
,
.
Queremos listar todos os cursos cujo não aparece em nenhuma linha da tabela Discente (ou seja, sem alunos matriculados).
Curso
Discente
Queremos listar todos os cursos cujo
Passo 2
Uma abordagem é usar uma subconsulta que retorna todos os
presentes em Discente e, na tabela Curso, filtrar aqueles cujo
não esteja nesse conjunto. Para isso, utilizamos o operador
NOT IN.Passo 3
A consulta SQL fica assim:
SELECT NomeCurso
FROM Curso
WHERE IdCurso NOT IN (
SELECT IdCurso
FROM Discente
);
Resposta
SELECT NomeCurso
FROM Curso
WHERE IdCurso NOT IN (
SELECT IdCurso
FROM Discente
);