Maison > base de données > tutoriel mysql > Comment puis-je récupérer efficacement des données hiérarchiques dans SQL Server 2005 sans CONNECT_BY ?

Comment puis-je récupérer efficacement des données hiérarchiques dans SQL Server 2005 sans CONNECT_BY ?

Barbara Streisand
Libérer: 2024-12-20 12:02:17
original
341 Les gens l'ont consulté

How Can I Efficiently Retrieve Hierarchical Data in SQL Server 2005 Without CONNECT_BY?

Récupération de données hiérarchiques à partir de SQL Server 2005

En l'absence de la clause CONNECT_BY familière dans SQL Server 2005, la récupération de données hiérarchiques peut poser des problèmes . Une approche courante consiste à créer une expression de table commune (CTE) récursive qui traverse la hiérarchie et construit le résultat souhaité.

Prenons l'exemple d'une table auto-référencée contenant une hiérarchie d'objets, où chaque enregistrement enfant a un colonne avec l'ID de son parent. Un CTE peut être utilisé pour récupérer les relations hiérarchiques et créer un chemin pour chaque élément :

CREATE TABLE tblHierarchy (ID int, ParentID int NULL, Name varchar(128));

INSERT INTO tblHierarchy VALUES (1, NULL, '1');
INSERT INTO tblHierarchy VALUES (2, NULL, '2');
INSERT INTO tblHierarchy VALUES (3, NULL, '3');
INSERT INTO tblHierarchy VALUES (4, 1, '1.1');
INSERT INTO tblHierarchy VALUES (5, 1, '1.2');
INSERT INTO tblHierarchy VALUES (6, 4, '1.1.1');

WITH Parent AS
(
    SELECT
        ID,
        ParentID,
        Name AS Path
    FROM
        tblHierarchy
    WHERE
        ParentID IS NULL

    UNION ALL

    SELECT
        TH.ID,
        TH.ParentID,
        CONVERT(varchar(128), Parent.Path + '/' + TH.Name) AS Path
    FROM
        tblHierarchy TH
    INNER JOIN
        Parent
    ON
        Parent.ID = TH.ParentID
)
SELECT * FROM Parent
Copier après la connexion

SORTIE :

ID  ParentID    Path
1   NULL        1
2   NULL        2
3   NULL        3
4   1       1/1.1
5   1       1/1.2
6   4       1/1.1/1.1.1
Copier après la connexion

En utilisant un CTE, nous peut parcourir la hiérarchie de manière récursive, en accumulant le chemin pour chaque élément, et récupérer facilement les données hiérarchiques souhaitées de manière structurée. Cette approche fournit une solution flexible et efficace pour gérer et interroger les données hiérarchiques dans SQL Server 2005.

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