Self join
Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 46 de 72.
Los self-joins son tipos diferentes de joins. Hasta ahora, hemos hablado de joins de múltiples tablas, pero los self-joins se unen a la misma tabla. Un ejemplo clásico sería una tabla de employees.
| employee_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
Cada empleado tiene un gerente excepto el gerente de mayor rango, y cada gerente es también un empleado.
El problema: Para cada empleado queremos saber el nombre del 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_idRealizamos un join entre la misma tabla, excepto que una vez la llamamos e1 y la segunda vez es e2. El join se realiza entre los campos employee_id y manager_id.
El resultado:
| id_empleado | nombre_empleado | nombre_gerente |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Desafío
IntermedioTablas y columnas disponibles:
<strong>friends</strong>:<strong>id</strong>,<strong>name</strong>,<strong>friend_id</strong>
Encuentra pares de amigos que sean amigos mutuos (existe una amistad mutua cuando el friend_id de la persona A apunta a la persona B Y el friend_id de la persona B apunta a la persona A). Muestra los nombres de ambos amigos en una sola fila. Nombra las columnas friend1 y friend2.
Nota: Incluye en la cláusula WHERE el criterio friend1.id < friend2.id para que no se incluyan pares duplicados
Hoja de referencia
Los self-joins (o autouniones) le permiten unir una tabla consigo misma utilizando alias de tabla. Esto es útil cuando necesita comparar filas dentro de la misma tabla o establecer relaciones entre registros en la misma tabla.
Sintaxis básica de un self-join:
SELECT columns
FROM table_name AS alias1
JOIN table_name AS alias2 ON alias1.column = alias2.columnEjemplo con empleados y 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_idLos puntos clave:
- Use diferentes alias (por ejemplo,
e1,e2) para la misma tabla - La condición de unión conecta campos relacionados entre los alias
- Útil para datos jerárquicos como las relaciones entre empleados y gerentes
Pruébalo tú mismo
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones 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