Maison > base de données > tutoriel mysql > Comment les auto-jointures récursives dans SQL Server peuvent-elles récupérer des données hiérarchiques ?

Comment les auto-jointures récursives dans SQL Server peuvent-elles récupérer des données hiérarchiques ?

Patricia Arquette
Libérer: 2025-01-15 12:15:47
original
624 Les gens l'ont consulté

How Can Recursive Self-Joins in SQL Server Retrieve Hierarchical Data?

Auto-jointures récursives SQL Server : navigation dans les données hiérarchiques

Les auto-jointures récursives de SQL Server offrent une méthode puissante pour parcourir les structures de données hiérarchiques. Ceci est particulièrement utile lorsqu'il s'agit de relations parent-enfant au sein d'une seule table.

Considérons un Categories tableau avec ces colonnes :

  • Id
  • Name
  • ParentId

Une auto-jointure récursive nous permet d'extraire les relations hiérarchiques au sein de ce tableau, englobant les niveaux de catégories imbriqués.

Exemple illustratif :

Imaginez cette hiérarchie de catégories :

<code>- Business Laptops
    - Gaming Laptops
        - Ultrabooks
            - Compact Ultrabooks</code>
Copier après la connexion

Pour récupérer « Business Laptops » et ses catégories parentes à l'aide d'une expression de table commune récursive (CTE), nous pouvons utiliser cette requête :

<code class="language-sql">;WITH CTE AS (
    SELECT id, name, name AS path, parent_id
    FROM Categories
    WHERE parent_id IS NULL
    UNION ALL
    SELECT t.id, t.name, CAST(cte.path + ',' + t.name AS VARCHAR(100)), t.parent_id
    FROM Categories t
    INNER JOIN CTE ON t.parent_id = CTE.id
)
SELECT id, name, path
FROM CTE
WHERE name = 'Business Laptops';</code>
Copier après la connexion

Le résultat de cette requête serait :

<code>id      name                path
1       Business Laptops      Business Laptops</code>
Copier après la connexion

Les auto-jointures récursives offrent un moyen efficace de gérer et de récupérer des données à partir de structures hiérarchiques complexes, en accédant aux informations associées sur plusieurs niveaux.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal