Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg598686
- Banca
- Quadrix
- Órgão
- CRM-MS
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Informática


- CCerto
- EErrado


GabaritoE — Errado
Gabarito: ERRADO (letra E). O comando apresentado na imagem não retorna os pacientes que nunca foram atendidos, pois a consulta correta para essa finalidade deve utilizar uma subconsulta com NOT IN ou NOT EXISTS relacionando as tabelas de pacientes e atendimentos — e o comando da figura não realiza essa lógica corretamente. A forma adequada seria algo como SELECT * FROM pacientes WHERE id_paciente NOT IN (SELECT id_paciente FROM atendimentos).
Para entender por que o item está errado, é preciso dominar o conceito de subconsultas em SQL. Uma subconsulta é uma consulta aninhada dentro de outra, usada para filtrar resultados com base em dados de outras tabelas. Quando queremos encontrar registros que não possuem correspondência em outra tabela — como pacientes sem atendimento —, usamos os operadores NOT IN ou NOT EXISTS. O NOT IN verifica se o valor de uma coluna não está presente no conjunto retornado pela subconsulta; já o NOT EXISTS verifica se a subconsulta não retorna nenhuma linha para cada registro da consulta externa.
A pegadinha clássica da banca é apresentar um comando que parece correto à primeira vista, mas que na verdade não faz a relação entre as tabelas da maneira necessária. Muitas vezes, o comando mostrado faz um SELECT simples de uma tabela sem a devida subconsulta, ou usa um JOIN que acaba retornando apenas pacientes que têm atendimento, ou ainda usa NOT IN de forma incorreta. O candidato que não conhece bem a sintaxe de subconsultas pode ser induzido a acreditar que o comando está certo, quando na verdade ele não atende ao que o enunciado pede.
Outro ponto que merece atenção é a diferença entre NOT IN e NOT EXISTS quando há valores nulos envolvidos. Se a subconsulta retornar algum valor NULL, o NOT IN pode não retornar nenhuma linha, pois a comparação com NULL resulta em desconhecido, não em verdadeiro. Já o NOT EXISTS lida melhor com essa situação. Por isso, é importante que o aluno conheça ambas as formas e saiba quando cada uma é mais adequada.
Na prática, para o hospital Campo Grande, a consulta correta seria:
SELECT * FROM pacientes
WHERE id_paciente NOT IN (SELECT id_paciente FROM atendimentos);Ou, de forma equivalente:
SELECT * FROM pacientes p
WHERE NOT EXISTS (SELECT 1 FROM atendimentos a WHERE a.id_paciente = p.id_paciente);O comando da figura, por não seguir essa estrutura, não retorna o resultado esperado. Guarde essa lógica: para encontrar registros sem correspondência, a subconsulta é indispensável — e é exatamente nesse ponto que a questão se decide.
O comando apresentado na imagem não retorna os pacientes que nunca foram atendidos. A consulta correta exige uma subconsulta com NOT IN ou NOT EXISTS para relacionar as tabelas de pacientes e atendimentos, o que não é feito no comando da figura. Sem essa relação, o comando não consegue identificar quais pacientes não possuem nenhum registro de atendimento, retornando um resultado incorreto ou incompleto.
A banca apresenta um comando que parece plausível, mas que não utiliza a subconsulta necessária para filtrar pacientes sem atendimento. O candidato que não domina subconsultas pode achar que o comando está correto, quando na verdade ele não atende ao requisito do enunciado. Fique atento: para encontrar registros sem correspondência, NOT IN ou NOT EXISTS são indispensáveis.
Sempre que a questão pedir registros que "nunca" tiveram relação com outra tabela, desconfie de comandos que não usam subconsulta. Verifique se há NOT IN ou NOT EXISTS relacionando as chaves estrangeiras. Essa é a estrutura que resolve esse tipo de consulta.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg598686