Menu
Coddy logo textTech

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_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

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_id

Realizamos 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_empleadonombre_empleadonombre_gerente
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

Desafío

Intermedio

Tablas 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.column

Ejemplo 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_id

Los 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

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos