Compartir a través de


Usar autocombinaciones

Una tabla se puede combinar consigo misma en una autocombinación. Use una autocombinación si desea crear un conjunto de resultados que combine los registros de una tabla con otros registros de la misma tabla. Para incluir una tabla dos veces en la misma consulta, debe proporcionar un alias de tabla para al menos una de las instancias del nombre de tabla. Este alias de tabla ayuda al procesador de consultas a determinar si las columnas deben presentar los datos de la versión derecha o izquierda de la tabla.

Ejemplos

A. Uso de una autocombinación para buscar los productos proporcionados por varios proveedores

El ejemplo siguiente usa una autocombinación para buscar los productos suministrados por más de un proveedor.

Puesto que esta consulta conlleva una combinación de la tabla ProductVendor consigo misma, la tabla ProductVendor aparece en dos funciones. Para distinguir estas funciones, debe dar a la tabla ProductVendor dos alias distintos (pv1 y pv2) en la cláusula FROM. Estos alias se usan para calificar los nombres de columna en el resto de la consulta. Éste es un ejemplo de la instrucción de autocombinación de Transact-SQL:

USE AdventureWorks;
GO
SELECT DISTINCT pv1.ProductID, pv1.VendorID
FROM Purchasing.ProductVendor pv1
    INNER JOIN Purchasing.ProductVendor pv2
        ON pv1.ProductID = pv2.ProductID
        AND pv1.VendorID <> pv2.VendorID
ORDER BY pv1.ProductID

B. Uso de una autocombinación para hacer coincidir los empleados con sus administradores

En el ejemplo siguiente se realiza una autocombinación de la tabla HumanResources.Employee para generar una lista de todos los administradores y de los empleados que dependen de ellos.

SELECT MgrTable.LoginID AS ManagerName,EmplTable.ManagerID, 
    EmplTable.LoginID, EmplTable.EmployeeID
FROM HumanResources.Employee AS EmplTable
    JOIN HumanResources.Employee AS MgrTable
        ON EmplTable.ManagerID = MgrTable.EmployeeID
ORDER BY MgrTable.LoginID, EmplTable.LoginID