Podkwerendy z aliasów
Wiele instrukcji, w których podzapytanie i Kwerenda zewnętrznego odnoszą się do tej samej tabela może być wyrażona jako samosprzężeniach (Łączenie tabela do siebie).Na przykład można wyszukać adresy pracowników z określonym stanie przy użyciu podzapytanie:
USE AdventureWorks2008R2;
GO
SELECT StateProvinceID, AddressID
FROM Person.Address
WHERE AddressID IN
(SELECT AddressID
FROM Person.Address
WHERE StateProvinceID = 39)
Oto zestaw wyników.
StateProvinceID AddressID
----------- -----------
39 942
39 955
39 972
39 22660
(4 row(s) affected)
Lub użyć samosprzężenie:
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;
Aliasy tabeli są wymagane, ponieważ tabela przyłączeniem się do siebie pojawi się w dwóch różnych ról.Aliasów można również używać w kwerendach zagnieżdżonych, które odwołują się do tej samej tabela, w kwerendzie wewnętrznych i zewnętrznych.
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)
Aliasy jawne stał się jasne, że odwołanie do Person.Address w podzapytanie nie oznacza to samo jako odwołanie zewnętrzne kwerendy.