Partager via


Sous-requêtes et alias

De nombreuses instructions où la sous-requête et la requête externe portent sur la même table peuvent également être formulées sous forme d'auto-jointures (jointure d'une table à elle-même). Vous pouvez par exemple trouver les salariés qui sont rattachés au même responsable que Terri Duffyen utilisant une sous-requête :

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

Voici l'ensemble des résultats. 

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

(7 row(s) affected)

Vous pouvez aussi utiliser une auto-jointure :

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

Les alias de table sont requis car la table, jointe à elle-même, apparaît dans deux rôles différents. Les alias peuvent aussi s'employer dans des requêtes imbriquées qui portent sur la même table, qu'il s'agisse d'une requête interne ou externe.

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)

Grâce aux noms d'alias explicites, il apparaît clairement qu'une référence à la table HumanResources.Employee dans la sous-requête est différente de la référence spécifiée dans la requête externe.

Voir aussi

Concepts

Types de sous-requête

Aide et Informations

Assistance sur SQL Server 2005