Self Join

Un selft join una combinación en la que una tabla se une o relaciona consigo misma (lo que también se llama relaciones unarias), especialmente cuando la tabla tiene una LLAVE EXTRANJERA que hace referencia a su propia LLAVE PRIMARIA. Unir una tabla en sí significa que cada fila de la tabla se combina consigo misma y con cada otra fila de la tabla.

El Self Join se puede ver como una combinación de dos copias de la misma tabla. La tabla no se copia realmente, pero SQL ejecuta el comando como si lo fuera a través de asignar un alias a las tablas

La sintaxis del comando para unir una tabla consigo misma es casi la misma que para unir dos tablas diferentes. Para distinguir los nombres de las columnas entre sí, se utilizan alias para el nombre real de la tabla, ya que ambas tablas tienen el mismo nombre. Los alias de nombre de tabla se definen en la cláusula FROM de la instrucción SELECT. Ver la sintaxis:

SELECT a.column_name, b.column_name…
FROM table1 AS a, table1 AS b
WHERE a.common_filed = b.common_field;

Vamos a relializar un ejemplo real usando la tabla Employees de la base de datos Northwind (que se puede descargar en este link).

Esta tabla tiene en ella misma registros para identificar al Jefe y a sus subalternos, para esto usa la columna EmployeeID como LLAVE PRIMARIA de cada registro y el campo REPORTSTO para indicar a quien le reportan los subaternos, la consutla sería de la siguiente manera:

SELECT J.FirstName +’  ‘ + J.LastName as Jefe
, S.FirstName+ ‘ ‘+ S.LastName as Subalterno
FROM Employees as J INNER JOIN Employees as S
ON J.EmployeeID=S.ReportsTo
GO

Leave a Reply

Your email address will not be published. Required fields are marked *