Relaciones · guía rápida

SELF JOIN

Es un JOIN donde la misma tabla aparece dos veces con alias distintos. Permite comparar filas o recorrer relaciones como empleado y responsable.

Lectura: 6–8 minEjemplo paso a pasoPráctica con pistas
Contenido de esta guía

Qué significa

Un self join no es una cláusula nueva. Es un JOIN normal en el que una tabla se referencia dos veces. Los alias separan los dos papeles: una instancia puede representar al empleado y la otra a su responsable.

Qué problema resuelve

Algunas relaciones están dentro de una sola tabla. En empleados, la columna responsable_id guarda el identificador de otra fila de la misma tabla. Para mostrar el nombre del responsable, hay que volver a consultar empleados con un alias diferente.

Idea clave: piensa en dos copias lógicas de la misma tabla. Los datos no se duplican; los alias solo permiten dar un papel distinto a cada referencia.

Patrón básico

Estructura
SELECT a.columna, b.columna
FROM tabla AS a
JOIN tabla AS b
  ON a.clave_relacionada = b.clave;

Ejemplo guiado

Filas de empleados utilizadas
idnombreresponsable_id
1Carmen SolerNULL
2Alex Ramos1
3Bea Molina2
4Carlos Peña1
5Diana León4

Queremos mostrar cada empleado junto al nombre de su responsable:

SQL
SELECT e.nombre AS empleado,
       r.nombre AS responsable
FROM empleados AS e
LEFT JOIN empleados AS r
  ON e.responsable_id = r.id
WHERE e.id IN (1, 2, 3, 5)
ORDER BY e.id;
Resultado esperado
empleadoresponsable
Carmen SolerNULL
Alex RamosCarmen Soler
Bea MolinaAlex Ramos
Diana LeónCarlos Peña

Cómo funciona

  1. e representa a la persona cuya fila estamos mostrando.
  2. r representa la posible fila de su responsable.
  3. La condición compara e.responsable_id con r.id.
  4. Se usa LEFT JOIN para conservar a Carmen, que no tiene responsable y produce NULL en esa columna.

Error frecuente

No distinguir las dos instancias

Consulta problemática
SELECT nombre, nombre
FROM empleados
JOIN empleados
  ON responsable_id = id;

Los nombres de tabla y columna quedan ambiguos. Asigna alias claros y cualifica cada columna: e.nombre, r.nombre, e.responsable_id y r.id.

Comprueba lo aprendido

Básica · apoyo gradual

Muestra empleado y responsable

Devuelve los empleados de los departamentos Ventas y Marketing junto con el nombre de su responsable. Conserva las columnas empleado, departamento y responsable, y ordena por el id del empleado.

Compatibilidad y matices

El patrón funciona en los motores SQL habituales porque utiliza alias y operaciones JOIN estándar. La relación puede ser jerárquica, como responsable y empleado, o comparativa, como encontrar pares de filas con una característica común. Al buscar parejas, añade una condición como a.id < b.id para no repetir cada par en ambos sentidos ni emparejar una fila consigo misma.

Qué debes recordar

  • SELF JOIN es un patrón, no una palabra clave independiente.
  • La misma tabla aparece con dos alias que representan papeles distintos.
  • La condición ON debe indicar con precisión cómo se relacionan las filas.

Conceptos relacionados

Fuentes técnicas consultadas

Se utilizaron para comprobar el patrón y el uso de alias. La explicación y los ejemplos son originales.