Freigeben über


Unterabfragen mit Aliasnamen

Viele Anweisungen, in denen die Unterabfrage und die äußere Abfrage auf dieselbe Tabelle verweisen, können als Selbstverknüpfungen (Verknüpfungen einer Tabelle mit sich selbst) ausgedrückt werden. Beispielsweise können Sie mit einer Unterabfrage alle Mitarbeiter finden, die denselben Vorgesetzten wie Terri Duffy haben:

USE AdventureWorks;
GO
SELECT EmployeeID, ManagerID
FROM HumanResources.Employee
WHERE ManagerID IN
    (SELECT ManagerID
     FROM HumanResources.Employee
     WHERE EmployeeID = 12)

Dies ist das Resultset. 

EmployeeID  ManagerID
----------- -----------
6           109
12          109
21          109
42          109
140         109
148         109
273         109

(7 row(s) affected)

Sie können auch eine Selbstverknüpfung verwenden:

USE AdventureWorks;
GO
SELECT e1.EmployeeID, e1.ManagerID
FROM HumanResources.Employee AS e1
INNER JOIN HumanResources.Employee AS e2
ON e1.ManagerID = e2.ManagerID
AND e2.EmployeeID = 12

Tabellenaliasnamen sind erforderlich, weil die mit sich selbst verknüpfte Tabelle zwei verschiedene Funktionen erfüllt. Aliasnamen können auch in geschachtelten Abfragen verwendet werden, in denen sowohl die innere als auch die äußere Abfrage auf dieselbe Tabelle verweisen.

USE AdventureWorks;
GO
SELECT e1.EmployeeID, e1.ManagerID
FROM HumanResources.Employee AS e1
WHERE e1.ManagerID IN
    (SELECT e2.ManagerID
     FROM HumanResources.Employee AS e2
     WHERE e2.EmployeeID = 12)

Explizite Aliasnamen machen deutlich, dass ein Verweis auf HumanResources.Employee in der Unterabfrage eine andere Bedeutung als der Verweis in der äußeren Abfrage hat.

Siehe auch

Konzepte

Arten von Unterabfragen

Hilfe und Informationen

Informationsquellen für SQL Server 2005