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
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
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!