Junções da tabela consigo mesma e apelidos
Faça a junção de uma tabela consigo mesma usando apelidos para comparar linhas dentro da mesma tabela (funcionários e gerentes, datas e datas anteriores).
Junções da tabela consigo mesma e apelidos é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
Autojunção: juntando uma tabela consigo mesma
Às vezes, o relacionamento está dentro de uma única tabela:
- Funcionários ↔ gerentes, sendo o gerente um funcionário
- Comentários encadeados, em que cada comentário tem um parent_id
- Grafo de amizades, usuário ↔ usuário
A configuração
Uma tabela employees com uma FK que referencia a própria tabela:
CREATE TABLE employees (
id BIGSERIAL PRIMARY KEY,
full_name TEXT NOT NULL,
manager_id BIGINT REFERENCES employees(id)
);Juntando funcionários aos seus gerentes
Você atribui um apelido diferente a cada instância:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Sem apelidos, a compilação falharia
Sem apelidos, você não consegue saber a qual full_name está se referindo. Toda referência fica ambígua:
-- ERROR: column reference "full_name" is ambiguous
SELECT full_name FROM employees JOIN employees ON ...LEFT JOIN para funcionários do nível superior
Uma junção INNER elimina os funcionários que não têm gerente, como o CEO. Use LEFT JOIN para mantê-los:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;Comentários encadeados
Mostre cada comentário com o texto de seu pai:
SELECT c.id, c.body, p.body AS parent_body
FROM comments c
LEFT JOIN comments p ON p.id = c.parent_id;Pares e combinações
Encontre pares de produtos que apareceram no mesmo pedido, sem pares duplicados (A,B) e (B,A):
SELECT a.id AS product_a, b.id AS product_b
FROM order_items a
JOIN order_items b
ON a.order_id = b.order_id
AND a.product_id < b.product_id;Comparando linhas adjacentes
Faça a autojunção com a versão "anterior" de uma linha:
SELECT a.id, a.created_at, b.created_at AS prev_at
FROM events a
LEFT JOIN events b ON b.id = a.previous_id;Autojunção versus função de janela
Para muitas tarefas de "comparar cada linha com a anterior", uma função de janela (LAG) é mais simples e rápida do que uma autojunção. Isso é abordado em Aprofundamento em funções de janela.
Autojunções recursivas
Precisa percorrer N níveis de profundidade, como um organograma ou uma árvore de tópicos? Use uma CTE recursiva — isso é abordado em Subconsultas e CTEs.
Indexando a coluna de FK
Sempre adicione um índice à coluna de FK que referencia a própria tabela. Sem ele, a junção examina a tabela inteira a cada busca pelo pai.
CREATE INDEX employees_manager_idx ON employees(manager_id);Revisão
As autojunções lidam com relacionamentos dentro de uma única tabela.
- Dois aliases para duas cópias virtuais
LEFT JOINpara manter as raízes / linhas de nível superior- Crie um índice na coluna
FK - As funções de janela podem simplificar padrões de «linha anterior»
Verificação rápida
Você faz uma junção de employees consigo mesma para encontrar o gerente de cada funcionário. Por que os aliases são necessários?
Perguntas Frequentes
A aula “Junções da tabela consigo mesma e apelidos” é grátis?
Sim — o texto completo de “Junções da tabela consigo mesma e apelidos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Junções da tabela consigo mesma e apelidos”?
Faça a junção de uma tabela consigo mesma usando apelidos para comparar linhas dentro da mesma tabela (funcionários e gerentes, datas e datas anteriores). Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Junções da tabela consigo mesma e apelidos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar JOIN (recapitulação do modelo relacional)
- Mecânica de INNER JOIN
- LEFT/RIGHT JOIN e junções OUTER
- Junções da tabela consigo mesma e apelidos