Share via


Subconsultas con alias

Muchas instrucciones en las que la subconsulta y la consulta externa hacen referencia a la misma tabla se pueden indicar como autocombinaciones (combinar una tabla con ella misma). Por ejemplo, puede buscar direcciones de empleados desde un estado determinado utilizando una subconsulta:

USE AdventureWorks2008R2;
GO
SELECT StateProvinceID, AddressID
FROM Person.Address
WHERE AddressID IN
    (SELECT AddressID
     FROM Person.Address
     WHERE StateProvinceID = 39)

El conjunto de resultados es el siguiente.

StateProvinceID AddressID

----------- -----------

39 942

39 955

39 972

39 22660

(4 filas afectadas)

O bien, puede usar una autocombinación:

USE AdventureWorks2008R2;
GO
SELECT e1.StateProvinceID, e1.AddressID
FROM Person.Address AS e1
INNER JOIN Person.Address AS e2
ON e1.AddressID = e2.AddressID
AND e2.StateProvinceID = 39;

Los alias de tabla son necesarios porque la tabla que se está combinando consigo misma aparece en dos roles distintos. Los alias se pueden usar también en las consultas anidadas que hacen referencia a la misma tabla en una consulta interna y externa.

USE AdventureWorks2008R2;
GO
SELECT e1.StateProvinceID, e1.AddressID
FROM Person.Address AS e1
WHERE e1.AddressID IN
    (SELECT e2.AddressID
     FROM Person.Address AS e2
     WHERE e2.StateProvinceID = 39)

Los alias explícitos indican claramente que las referencias a Person.Address en la subconsulta no significan lo mismo que las referencias de la consulta externa.

Vea también

Conceptos