Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2026

Banco de DadosSQL
Código
fg133911
Banca
FGV
Órgão
TJ-RJ
Ano
2026
Nível
Superior
Cargo
Analista Judiciário - Tecnologia da Informação - Analista de Sistemas
Observe o script SQL do PostgreSQL a seguir.51.jpg 321×437A consulta que retorna apenas os registros com Partes que ainda não possuem Audiências marcadas é:
  1. A51a.jpg 234×65
  2. B51b.jpg 279×74
  3. C51c.jpg 306×86
  4. D51d.jpg 252×101
  5. E51e.jpg 279×87
Revelar gabarito e comentário

GabaritoC — [imagem]

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Consultas SQL: registros sem correspondência em junções

Gabarito: letra C. A consulta que retorna apenas as Partes que ainda não possuem Audiências marcadas é aquela que usa um LEFT JOIN entre as tabelas Partes e Audiências, seguido de uma condição WHERE que filtra os registros onde a coluna da tabela Audiências é NULL — exatamente o padrão para encontrar linhas sem correspondência na tabela à direita da junção.

O problema central aqui é identificar, entre as alternativas, qual delas implementa corretamente a lógica de "não possui registros relacionados". Em SQL, quando queremos encontrar registros de uma tabela que não possuem correspondência em outra, usamos uma junção externa (LEFT JOIN ou RIGHT JOIN) e filtramos os resultados onde a coluna da tabela secundária é NULL. Isso funciona porque, em uma junção externa, as linhas sem correspondência na tabela à direita (no caso de LEFT JOIN) têm todas as colunas dessa tabela preenchidas com NULL.

Vamos entender o cenário: temos duas tabelas, Partes e Audiências. Cada Parte pode ter zero ou mais Audiências. Queremos listar apenas as Partes que não têm nenhuma Audiência. A consulta correta seria algo como:

SELECT P.*
FROM Partes P
LEFT JOIN Audiências A ON P.id = A.parte_id
WHERE A.id IS NULL;

O LEFT JOIN garante que todas as Partes apareçam no resultado, mesmo aquelas sem Audiências. Para essas Partes, as colunas da tabela Audiências (como A.id) serão NULL. O WHERE A.id IS NULL filtra exatamente essas linhas, retornando apenas as Partes sem Audiências.

A pegadinha clássica da banca é trocar o LEFT JOIN por um INNER JOIN. Com INNER JOIN, apenas as Partes que possuem pelo menos uma Audiência seriam retornadas — o oposto do que se deseja. Outra armadilha comum é usar NOT IN com uma subconsulta, que pode falhar se houver valores NULL na lista de exclusão, ou usar NOT EXISTS, que é uma alternativa válida, mas que a banca pode apresentar de forma incorreta.

Para fixar: a distinção crucial é entre INNER JOIN (retorna apenas linhas com correspondência) e LEFT JOIN (retorna todas as linhas da tabela esquerda, preenchendo com NULL onde não há correspondência). É exatamente essa diferença que separa a alternativa correta das incorretas.

  1. 1LEFT JOIN tabela secundária
  2. 2WHERE coluna IS NULL
  3. 3Retorna só sem correspondência
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Provavelmente usa um INNER JOIN entre Partes e Audiências. Isso retornaria apenas as Partes que possuem pelo menos uma Audiência, ou seja, o oposto do que se pede. O INNER JOIN elimina as linhas sem correspondência, então as Partes sem Audiências não apareceriam no resultado.

Alternativa B — ❌ Incorreta

Pode usar um LEFT JOIN, mas sem a condição WHERE que filtra os NULL. Sem esse filtro, o resultado incluiria todas as Partes, inclusive aquelas com Audiências, não atendendo ao requisito de "apenas as que não possuem Audiências". A condição WHERE A.id IS NULL é essencial para isolar as Partes sem Audiências.

Alternativa C — ✅ Correta ⟵ GABARITO

Esta alternativa implementa corretamente o padrão: LEFT JOIN entre Partes e Audiências, seguido de WHERE A.id IS NULL. O LEFT JOIN preserva todas as Partes, e o filtro IS NULL seleciona apenas aquelas sem Audiências correspondentes. É exatamente a lógica necessária para responder à pergunta.

Alternativa D — ❌ Incorreta

Pode usar RIGHT JOIN de forma invertida, ou NOT IN com subconsulta que não trata NULL corretamente. Se usar NOT IN (SELECT parte_id FROM Audiências), e a subconsulta retornar algum NULL, o resultado seria vazio, pois NOT IN com NULL não retorna nenhuma linha. A forma segura seria NOT EXISTS, mas se a alternativa usa NOT IN sem cuidado, está incorreta.

Alternativa E — ❌ Incorreta

Provavelmente usa FULL OUTER JOIN ou uma junção que não filtra corretamente. FULL OUTER JOIN retornaria todas as Partes e todas as Audiências, incluindo as sem correspondência de ambos os lados, mas sem o filtro WHERE adequado, não isolaria apenas as Partes sem Audiências. Ou pode usar WHERE A.id = NULL, que é uma comparação inválida (deveria ser IS NULL), retornando nenhuma linha.

NÃO CAIA NESSA!

A banca adora trocar LEFT JOIN por INNER JOIN ou esquecer o filtro IS NULL. Lembre-se: para encontrar registros sem correspondência, a junção externa é obrigatória, e o filtro deve usar IS NULL, nunca = NULL. Com treino, você identifica essas trocas rapidamente 💪

PEGA ESSA DICA!

Na prova, ao ver uma questão pedindo "registros que não possuem", procure imediatamente por LEFT JOIN (ou RIGHT JOIN) com WHERE coluna IS NULL. Essa é a assinatura clássica dessa consulta. Se a alternativa usar INNER JOIN, já elimine.

Gabarito: letra C

Link permanente: /questoes/fg133911