Possible Duplicate: sql : explications sur les auto-joints
Qu'est-ce qu'une auto-jonction et quand l'utilisez-vous ? Je ne comprends pas ce qu'est une auto-jonction. Une explication vulgarisée avec un exemple serait la bienvenue.
Vous utilisez une auto-jonction lorsqu'une table fait référence à des données en elle-même.
Par exemple, une table Employee
peut avoir une colonne SupervisorID
qui pointe vers l'employé qui est le patron de l'employé actuel.
Pour interroger les données et obtenir des informations sur les deux personnes dans une seule ligne, vous pouvez effectuer une auto-jonction comme suit :
select e1.EmployeeID,
e1.FirstName,
e1.LastName,
e1.SupervisorID,
e2.FirstName as SupervisorFirstName,
e2.LastName as SupervisorLastName
from Employee e1
left outer join Employee e2 on e1.SupervisorID = e2.EmployeeID
Une auto-jonction, c'est simplement quand vous joignez une table avec elle-même. Il n'y a pas de mot-clé SELF JOIN
, vous écrivez juste une jointure ordinaire où les deux tables impliquées dans la jointure sont la même table. Une chose à noter est que lorsque vous faites une auto-jonction, il est nécessaire d'utiliser un alias pour la table, sinon le nom de la table serait ambigu.
C'est utile lorsque vous voulez mettre en corrélation des paires de lignes de la même table, par exemple une relation parent - enfant. La requête suivante renvoie les noms de toutes les sous-catégories immédiates de la catégorie 'Cuisine' ;.
SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
Vous utilisez une auto-jonction sur une table qui fait "référence" à elle-même, par exemple une table d'employés où managerid est une clé étrangère à employeeid sur cette même table.
Exemple :
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid