Maison >base de données >tutoriel mysql >Comment les auto-jointures peuvent-elles aider à récupérer des données hiérarchiques dans une seule table ?

Comment les auto-jointures peuvent-elles aider à récupérer des données hiérarchiques dans une seule table ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-14 12:01:49852parcourir

How Can Self-Joins Help Retrieve Hierarchical Data Within a Single Table?

Auto-jointures : un aperçu concis

Une auto-jointure dans la gestion de base de données est une technique de requête dans laquelle une table est jointe à elle-même. Il s'agit d'une méthode de normalisation courante, permettant d'accéder à plusieurs instances des données de la même table dans une seule instruction SQL.

Comprendre le mécanisme d'auto-adhésion

Imaginez un tableau « Employés » contenant les détails des employés, y compris les identifiants des responsables. Une auto-adhésion récupère efficacement les données reflétant les hiérarchies des employés.

Exemple illustratif : relations employé-manager

Supposons que nous ayons une table « Employés » avec l'ID de l'employé, son nom et l'ID du responsable. Pour afficher le nom de chaque employé à côté du nom de son manager, une auto-adhésion est idéale :

<code class="language-sql">SELECT e1.Name AS EmployeeName, e2.Name AS ManagerName
FROM Employees e1
INNER JOIN Employees e2 ON e1.ManagerID = e2.EmployeeID;</code>

Résultat :

EmployeeName ManagerName
ABC XYZ
DEF ABC
XYZ NULL

Cette auto-adhésion nous permet d'accéder deux fois à la table "Employés", reliant efficacement les employés à leurs managers respectifs, révélant la structure hiérarchique. Notez que les employés sans manager afficheront NULL pour ManagerName.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn