Récupération de données hiérarchiques dans SQL Server 2005
De nombreux développeurs ont du mal à récupérer des données hiérarchiques à partir de SQL Server 2005, en particulier lorsqu'ils traitent des hiérarchies d'objets complexes . Cela est principalement dû à l'absence de clause CONNECT_BY, une fonctionnalité puissante disponible dans les bases de données Oracle pour les requêtes hiérarchiques.
Une approche consiste à créer une table auto-référencée avec une colonne contenant l'ID du parent pour chaque enregistrement enfant. . Une vue peut ensuite être utilisée pour mapper les enfants aux niveaux hiérarchiques. De plus, une requête complexe peut être utilisée pour mettre en relation les parents et les enfants. Bien que cette méthode soit fonctionnelle, elle peut s'avérer lourde et inefficace.
Une solution plus élégante pour les requêtes hiérarchiques dans SQL Server 2005 consiste à exploiter les expressions de table communes (CTE). Les CTE vous permettent de créer des tables temporaires dans une requête, qui peuvent être utilisées pour des structures hiérarchiques complexes.
L'exemple suivant montre comment créer une table hiérarchique et utiliser un CTE pour sélectionner la structure hiérarchique 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
Cette approche fournit une solution plus efficace et plus concise pour récupérer données hiérarchiques dans SQL Server 2005, éliminant ainsi le besoin de requêtes complexes et vous permettant de travailler plus efficacement avec les hiérarchies.
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!