Como usar SELF JOIN no SQL?

O SELF JOIN permite unir uma tabela a ela mesma no SQL, útil para modelar hierarquias, relações de funcionários e estruturas organizacionais.

Como usar SELF JOIN no SQL?

O SELF JOIN é uma técnica do SQL onde uma tabela é unida a ela mesma. Ele é útil para modelar relações hierárquicas, como estruturas de funcionários e gerentes, categorias aninhadas e dependências de produtos.

Estrutura básica do SELF JOIN

A sintaxe do SELF JOIN é semelhante a um JOIN comum, mas utilizando aliases diferentes para a mesma tabela:

SELECT e1.nome AS funcionario, e2.nome AS gerente 
FROM funcionarios e1 
INNER JOIN funcionarios e2 ON e1.gerente_id = e2.id;

Aqui, a tabela funcionarios está sendo comparada consigo mesma:

  • e1 representa os funcionários subordinados.
  • e2 representa os gerentes.

Encontrando subordinados de um gerente específico

Se quisermos listar apenas os funcionários de um determinado gerente:

SELECT e1.nome AS funcionario, e2.nome AS gerente 
FROM funcionarios e1 
INNER JOIN funcionarios e2 ON e1.gerente_id = e2.id 
WHERE e2.nome = 'Carlos Silva';

Isso retorna apenas os funcionários gerenciados por Carlos Silva.

Usando SELF JOIN para encontrar categorias aninhadas

Em um banco de dados de e-commerce, podemos usar SELF JOIN para estruturar categorias e subcategorias:

SELECT c1.nome AS categoria, c2.nome AS subcategoria 
FROM categorias c1 
LEFT JOIN categorias c2 ON c2.categoria_pai_id = c1.id;

Isso retorna todas as categorias e suas subcategorias associadas.

Cuidados ao usar SELF JOIN

  • O SELF JOIN pode gerar consultas pesadas, especialmente em tabelas grandes.
  • Use índices nas colunas de junção (id, gerente_id, etc.) para evitar queda de desempenho.
  • Sempre verifique se a estrutura da tabela permite um relacionamento hierárquico adequado.

O SELF JOIN é uma abordagem poderosa para modelagem de dados relacionais que envolvem hierarquias. Em empresas, ele permite estruturar organogramas associando funcionários a seus respectivos gerentes. Em sistemas de categorias de produtos, podemos utilizá-lo para exibir relações entre categorias e subcategorias. O uso eficiente do SELF JOIN pode otimizar a recuperação de informações sem a necessidade de criar tabelas adicionais para representar relações hierárquicas.

Algumas aplicações:

  • Relacionamento entre funcionários e seus gerentes
  • Estruturas hierárquicas em sistemas de categorias
  • Modelagem de árvores genealógicas
  • Relacionamento entre produtos e variações
  • Análises de conexões entre clientes e afiliados

Dicas para quem está começando

  • Use aliases para diferenciar as instâncias da mesma tabela
  • Otimize a consulta com índices em colunas usadas na junção
  • Verifique a modelagem do banco para evitar redundâncias
  • Evite SELF JOIN desnecessários em tabelas grandes para não impactar a performance
  • Utilize LEFT JOIN se quiser incluir registros que não possuem correspondência

Contribuições de Rodrigo Martins

Compartilhe este tutorial: Como usar SELF JOIN no SQL?

Compartilhe este tutorial

Continue aprendendo:

Como juntar mais de duas tabelas no SQL?

Podemos unir mais de duas tabelas no SQL utilizando múltiplos JOINs, conectando tabelas relacionadas por meio de chaves primárias e estrangeiras.

Tutorial anterior

Como usar CROSS JOIN no SQL?

O CROSS JOIN no SQL combina todos os registros de duas tabelas, gerando o produto cartesiano entre elas.

Próximo tutorial