Skip to content

Múltiples relaciones con la misma tabla

Las relaciones en SQL son una forma de conectar tablas entre sí utilizando una o más columnas comunes. En algunos casos, es posible que necesitemos establecer múltiples relaciones con la misma tabla. Por ejemplo, en una tabla de empleados, es posible que necesitemos establecer una relación entre un empleado y su supervisor, así como una relación entre un empleado y su asistente.

Para establecer múltiples relaciones con la misma tabla, podemos utilizar la cláusula JOIN con la tabla de la que queremos establecer la relación y utilizar alias para referenciar la tabla múltiples veces en la consulta.

En Microsoft SQL Server, las múltiples relaciones con la misma tabla se pueden realizar utilizando la cláusula JOIN y la tabla de la que queremos establecer la relación se puede referenciar utilizando un alias.

Para facilitar la comprensión de las múltiples relaciones con la misma tabla, utilizaremos las siguientes tablas:

Tabla Employees

EmployeeIDLastNameFirstNameSupervisorIDAssistantID
1DavolioNancy32
2FullerAndrew3NULL
3LeverlingJanetNULL1
4PeacockMargaret31

Tabla Supervisors

SupervisorIDLastNameFirstName
1LeverlingJanet
2DavolioNancy
3PeacockMargaret

Tabla Assistants

AssistantIDLastNameFirstName
1LeverlingJanet
2DavolioNancy

Múltiples relaciones con la misma tabla

Para establecer múltiples relaciones con la misma tabla, podemos utilizar la cláusula JOIN con la tabla de la que queremos establecer la relación y utilizar alias para referenciar la tabla múltiples veces en la consulta.

La sintaxis básica para establecer múltiples relaciones con la misma tabla es la siguiente:

SELECT column1, column2, ...
FROM table1 alias1
JOIN table2 alias2
ON alias1.column_name = alias2.column_name;

Por ejemplo, para establecer una relación entre los empleados y sus supervisores y asistentes utilizando las tablas Employees, Supervisors y Assistants, se puede utilizar la siguiente consulta:

SELECT e.LastName AS EmployeeLastName, e.FirstName AS EmployeeFirstName,
s.LastName AS SupervisorLastName, s.FirstName AS SupervisorFirstName,
a.LastName AS AssistantLastName, a.FirstName AS AssistantFirstName
FROM Employees e
JOIN Supervisors s
ON e.SupervisorID = s.SupervisorID
JOIN Assistants a
ON e.AssistantID = a.AssistantID;

En esta consulta, estamos seleccionando los campos LastName y FirstName de las tablas Employees, Supervisors y Assistants utilizando los alias e, s y a. Luego, estamos estableciendo una relación entre los empleados y sus supervisores utilizando la columna SupervisorID y una relación entre los empleados y sus asistentes utilizando la columna AssistantID.

Donde tenemos como resultado la siguiente tabla:

EmployeeLastNameEmployeeFirstNameSupervisorLastNameSupervisorFirstNameAssistantLastNameAssistantFirstName
DavolioNancyPeacock
MargaretJanetLeverling
JanetLeverlingNULL
AndrewFullerPeacock
MargaretNULLNULL

En esta tabla, cada fila representa un empleado con su supervisor y asistente correspondientes. Las múltiples relaciones con la misma tabla se utilizan para conectar una tabla con otra tabla múltiples veces en una sola consulta.

Referencias