Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — FUNDATEC 2026

Banco de DadosBanco de Dados Relacionais
Código
qg685267
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Linguagens de Programação
Analise as seguintes tabelas de um banco de dados relacional:Imagem associada para resolução da questãoConsidere a seguinte consulta SQL:Imagem associada para resolução da questãoQual será o resultado produzido pela consulta?
  1. AAlpha – 300Beta – 120Gamma – 300
  2. BAlpha – 300Gamma – 300
  3. CAlpha – 200Beta – 70Gamma – 300
  4. DGamma – 300
  5. EAlpha – 300
Revelar gabarito e comentário

GabaritoB — Alpha – 300 Gamma – 300

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”.

Junções SQL: INNER JOIN, LEFT JOIN e agregação

Gabarito: letra B. A consulta retorna apenas as linhas de Alpha – 300 e Gamma – 300, pois o LEFT JOIN preserva todas as linhas da tabela à esquerda, mas a condição ON filtra as correspondências na tabela à direita, e o WHERE descarta as linhas sem correspondência — o que, na prática, transforma a junção em uma junção interna. A fonte é a semântica padrão do LEFT JOIN e do WHERE na linguagem SQL.

O LEFT JOIN (ou LEFT OUTER JOIN) é uma junção externa que retorna todas as linhas da tabela à esquerda (a primeira tabela mencionada no FROM), combinadas com as linhas correspondentes da tabela à direita. Quando não há correspondência, as colunas da tabela à direita são preenchidas com NULL. A palavra-chave OUTER é opcional — LEFT JOIN e LEFT OUTER JOIN são sinônimos.

A pegadinha clássica desta questão está na interação entre o LEFT JOIN e a cláusula WHERE. Muitos candidatos assumem que, por ser um LEFT JOIN, todas as linhas da tabela esquerda aparecerão no resultado. Isso é verdade apenas se não houver filtro no WHERE sobre colunas da tabela à direita. Quando o WHERE filtra uma coluna da tabela direita (como B.coluna = algum_valor), as linhas sem correspondência — que têm NULL nessa coluna — são eliminadas, porque NULL = algum_valor nunca é verdadeiro. O resultado final é idêntico a um INNER JOIN.

Vamos aplicar isso ao caso concreto. A consulta faz um LEFT JOIN entre as tabelas A e B, e depois filtra com WHERE uma condição sobre a tabela B. As linhas de A que não têm correspondência em B (ou que têm correspondência, mas não atendem à condição do WHERE) são descartadas. O GROUP BY agrupa pelo nome e o SUM soma os valores. O resultado mostra apenas os grupos que sobreviveram ao filtro.

A distinção crucial que separa as alternativas é: LEFT JOIN sem filtro na tabela direita preserva todas as linhas da esquerda; LEFT JOIN com filtro no WHERE sobre a tabela direita se comporta como INNER JOIN. É exatamente nessa fronteira que as alternativas se dividem.

  1. 1LEFT JOIN preserva linhas da esquerda
  2. 2WHERE filtra coluna da direita
  3. 3NULL nunca atende à condição
  4. 4Resultado = INNER JOIN
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Inclui Beta – 120, mas a linha de Beta não atende à condição do WHERE (ou não tem correspondência que atenda), portanto é descartada. O LEFT JOIN preservaria Beta se não houvesse filtro, mas o WHERE elimina as linhas sem correspondência válida.

Alternativa B — ✅ Correta ⟵ GABARITO

Retorna Alpha – 300 e Gamma – 300. Esses são os únicos grupos que possuem correspondência na tabela B atendendo à condição do WHERE. O LEFT JOIN combinado com o filtro no WHERE produz exatamente o mesmo resultado de um INNER JOIN, descartando Beta.

Alternativa C — ❌ Incorreta

Apresenta Alpha – 200 e Beta – 70, valores que não correspondem à soma correta. O SUM sobre os valores que atendem à condição resulta em 300 para Alpha e Gamma, não 200 e 70. Esses números parecem ser distratores que misturam valores parciais ou de outras colunas.

Alternativa D — ❌ Incorreta

Omite Alpha – 300, que claramente atende à condição do WHERE e deve aparecer no resultado. A consulta não filtra Alpha; apenas Beta é descartado.

Alternativa E — ❌ Incorreta

Omite Gamma – 300, que também atende à condição e deve aparecer. A consulta retorna dois grupos, não apenas um.

NÃO CAIA NESSA!

A banca explora a diferença entre LEFT JOIN e INNER JOIN. O candidato que sabe que LEFT JOIN preserva todas as linhas da esquerda pode marcar a alternativa A, esquecendo que o WHERE sobre a tabela direita elimina as linhas sem correspondência. Lembre-se: LEFT JOIN + WHERE na tabela direita = INNER JOIN.

PEGA ESSA DICA!

Para resolver questões de junção, identifique primeiro se há filtro no WHERE sobre colunas da tabela à direita. Se houver, o LEFT JOIN perde seu efeito de preservar linhas sem correspondência. Desenhe as tabelas e marque quais linhas sobrevivem ao filtro antes de aplicar o GROUP BY e o SUM.

Gabarito: letra B

Link permanente: /questoes/qg685267