Alternativa C - uma autojunção
Análise da Questão
A questão apresenta um comando SQL que realiza uma junção entre tabelas. Para identificar o tipo de junção, precisamos observar como as tabelas são referenciadas na cláusula FROM.
No código fornecido:
FROM funcionário worker JOIN funcionário manager
O mesmo nome de tabela (funcionário) aparece duas vezes. Isso ocorre porque foram criados dois aliases (apelidos): worker e manager.
Conceito de Autojunção
Uma autojunção (ou self-join) acontece quando uma tabela é associada a ela mesma dentro do mesmo comando SQL.
- Objetivo: Geralmente utilizada para relacionar linhas de uma mesma tabela, como hierarquias (ex: gerente e subordinado na tabela de funcionários).
- Requisito: É necessário usar aliases distintos para diferenciar as duas instâncias da tabela.
- Exemplo Prático:
funcionário worker representa os subordinados e funcionário manager representa os gestores.
Por que as outras opções estão incorretas?
As demais alternativas descrevem tipos de junções que possuem sintaxes específicas ou comportamentos diferentes:
- Junção Externa Esquerda: Exige a palavra-chave
LEFT JOIN antes da segunda tabela. O comando usado foi apenas JOIN. - Junção Externa Completa: Exigia a palavra-chave
FULL OUTER JOIN. - Junção Cruzada: Realiza o produto cartesiano sem condições de junção (
CROSS JOIN). Como há uma cláusula ON definindo uma condição (worker.id_ger = manager.id_fun), não é uma junção cruzada.
Conclusão:
Como a consulta une a tabela funcionário consigo mesma utilizando aliases diferentes, trata-se obrigatoriamente de uma autojunção.