Livelli multipli di nidificazione
Una subquery può includere una o più subquery. Un'istruzione supporta qualsiasi numero di livelli di nidificazione di subquery.
La query seguente consente di trovare i nomi dei dipendenti che operano anche come venditori.
Use AdventureWorks;
GO
SELECT LastName, FirstName
FROM Person.Contact
WHERE ContactID IN
(SELECT ContactID
FROM HumanResources.Employee
WHERE EmployeeID IN
(SELECT SalesPersonID
FROM Sales.SalesPerson)
Set di risultati:
LastName FirstName
-------------------------------------------------- -----------------------
Jiang Stephen
Abbas Syed
Alberts Amy
Ansman-Wolfe Pamela
Campbell David
Carson Jillian
Ito Shu
Mitchell Linda
Reiter Tsvi
Saraiva Jos
Vargas Garrett
Varkey Chudukatil Ranjit
Valdez Rachel
Tsoflias Lynn
Pak Jae
Blythe Michael
Mensa-Annan Tete
(17 row(s) affected)
La query più interna restituisce gli ID dei venditori. La query di livello immediatamente superiore viene valutata in base a tali ID e restituisce gli ID contatti dei dipendenti. La query più esterna, infine, utilizza gli ID contatti per trovare i nomi dei dipendenti.
Questa query può inoltre essere formulata come join:
USE AdventureWorks;
GO
SELECT LastName, FirstName
FROM Person.Contact c
INNER JOIN HumanResources.Employee e
ON c.ContactID = e.ContactID
JOIN Sales.SalesPerson s
ON e.EmployeeID = s.SalesPersonID