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 roles. Para distinguir estas roles, 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. Este es un ejemplo de la instrucción de autocombinación de Transact-SQL:

USE AdventureWorks2008R2;
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 a los vendedores con sus territorios

En el ejemplo siguiente se realiza una autocombinación de la tabla Sales.SalesPerson para generar una lista de todos los territorios y de los vendedores que trabajan en ellos.

SELECT st.Name AS TerritoryName, sp.BusinessEntityID, 
    sp.SalesQuota, sp.SalesYTD
FROM Sales.SalesPerson AS sp
    JOIN Sales.SalesTerritory AS st
        ON sp.TerritoryID = st.TerritoryID
ORDER BY st.Name, sp.BusinessEntityID