A self join in SQL Server is a useful statement to use for demonstrating relationships within a single SQL Server table database. In this tutorial, I’ll show you when and how to use an SQL self join. To do that, I’ll be detailing an sql self join example where I’ll list the supervisors for all employees in the Northwind Employees sample table.
¿Para qué sirve el join auto en SQL?
El join auto es un tipo especial y algo poco común de unión SQL. Mientras que la mayoría de las uniones, como el INNER JOIN, enlazan dos o más tablas diferentes por sus columnas comunes, un join auto enlaza una tabla con sí misma. A diferencia de las operaciones de unión regulares, se utiliza la misma tabla tanto como tabla izquierda como como tabla derecha en la operación de unión.
Por ejemplo, podría utilizar un join auto para encontrar a todos los empleados que tienen el mismo jefe. Aquí podría coincidir el ID del jefe con un ID de empleado. Alternativamente, podría utilizar un join auto para encontrar a todos los clientes que tienen pedidos para los mismos productos.
Ejemplo de unión SQL auto
La siguiente consulta muestra un ejemplo de código SQL para una unión auto utilizando la base de datos de muestra Northwind. El nombre de la tabla es ‘Employees’ y, como podría imaginarse, contiene datos de los empleados.
USE Northwind SELECT e1.EmployeeID, e1.FirstName, e1.LastName, e1.ReportsTo, e2.FirstName as ManagerFirstName, e2.LastName as ManagerLastName FROM Employees e1 LEFT OUTER JOIN Employees e2 on e1.ReportsTo = e2.EmployeeID
Este ejemplo de unión SQL auto mostrará los nombres de los supervisores para cada empleado.
- Aquí, estamos uniendo la tabla Employees a sí misma utilizando la columna ‘ReportsTo’ y la columna ‘EmployeeID’. Como los supervisores también son empleados, aparecen en la misma tabla Employees.
- En este caso, los valores en la columna ‘ReportsTo’ deben coincidir con los valores en la columna ‘EmployeeID’.
- En el conjunto de resultados, las columnas ‘FirstName’ y ‘LastName’ de la tabla unida a sí misma se renombrarán a ‘ManagerFirstName’ y ‘ManagerLastName’.
- La tabla EmployeeID utiliza un alias de tabla de ‘e1’ mientras que la tabla unida a sí misma utiliza un alias de tabla de ‘e2’.
- La sintaxis real de self join en SQL es un LEFT OUTER JOIN. El párrafo ON especifica las columnas que se utilizarán en el self join.
Puede ver el resultado de la consulta de self join en la siguiente imagen:

Esta consulta devuelve un conjunto de resultados que incluye el EmployeeID, el FirstName, Last Name, ReportsTo (EmployeeID), el ManagerFirstName y ManagerLastName. Si examina el conjunto de resultados, puede ver que Andrew Fuller tiene un EmployeeID de 2 y que también es el supervisor para EmployeeID 1, 3, 4, 5 y 8. Andrew Fuller no informa de nada a nadie más, por lo tanto su ReportTo y ManagerFirstName y ManagerLastName están todos en NULL.
¿Cuándo debería utilizar un self join en SQL?
Deberías realmente usar una auto unión cuando una tabla SQL hace referencia a datos en sí misma. Como expliqué en este artículo, un gran caso de uso para una auto unión en SQL puede ser una tabla con datos de empleados donde cada fila contiene información sobre los empleados y sus gerentes. En ese caso, una auto unión te permite mostrar fácilmente información relevante sobre cómo funciona una organización.
Source:
https://petri.com/sql-self-join/