Self join
Parte da seção Fundamentos do Journey de SQL da Coddy — lição 46 de 72.
Self-joins são tipos diferentes de junções. Até agora, falamos sobre junções de múltiplas tabelas, mas self-joins são unidos à mesma tabela. Um exemplo clássico seria uma tabela de employees.
| employee_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
Todo funcionário tem um gerente, exceto o gerente de nível mais alto, e todo gerente também é um funcionário.
O problema: Para cada funcionário, queremos saber o nome do gerente.
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idNós fazemos o join entre a mesma tabela, exceto que em uma vez a chamamos de e1 e na segunda vez ela é e2. O join ocorre entre os campos employee_id e manager_id.
O resultado:
| employee_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Desafio
MédioTabelas e colunas disponíveis:
<strong>friends</strong>:<strong>id</strong>,<strong>name</strong>,<strong>friend_id</strong>
Encontre pares de amigos que são amigos mútuos (a amizade mútua existe quando o friend_id da pessoa A aponta para a pessoa B E o friend_id da pessoa B aponta para a pessoa A). Exiba os nomes de ambos os amigos em uma única linha. Nomeie as colunas como friend1 e friend2.
Nota: Inclua na cláusula WHERE o critério friend1.id < friend2.id para que não inclua pares duplicados
Folha de consulta
Self-joins permitem que você junte uma tabela a si mesma usando aliases de tabela. Isso é útil quando você precisa comparar linhas dentro da mesma tabela ou estabelecer relacionamentos entre registros na mesma tabela.
Sintaxe básica de self-join:
SELECT columns
FROM table_name AS alias1
JOIN table_name AS alias2 ON alias1.column = alias2.columnExemplo com funcionários e gerentes:
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idOs pontos principais:
- Use aliases diferentes (ex:
e1,e2) para a mesma tabela - A condição de join conecta campos relacionados entre os aliases
- Útil para dados hierárquicos, como relacionamentos entre funcionário e gerente
Experimente você mesmo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns