Heim >Datenbank >MySQL-Tutorial >Wie kann ich hierarchische Daten in SQL Server 2005 ohne CONNECT_BY effizient abrufen?
Abrufen hierarchischer Daten aus SQL Server 2005
Da in SQL Server 2005 die bekannte CONNECT_BY-Klausel fehlt, kann das Abrufen hierarchischer Daten eine Herausforderung darstellen . Ein gängiger Ansatz besteht darin, einen rekursiven gemeinsamen Tabellenausdruck (CTE) zu erstellen, der die Hierarchie durchläuft und die gewünschte Ausgabe erstellt.
Betrachten Sie das Beispiel einer selbstreferenzierenden Tabelle, die eine Hierarchie von Objekten enthält, in der jeder untergeordnete Datensatz einen hat Spalte mit der ID des übergeordneten Elements. Ein CTE kann verwendet werden, um die hierarchischen Beziehungen abzurufen und einen Pfad für jedes Element zu erstellen:
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
AUSGABE:
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
Durch die Verwendung eines CTE können wir kann die Hierarchie rekursiv durchlaufen, den Pfad für jedes Element akkumulieren und die gewünschten hierarchischen Daten einfach und strukturiert abrufen. Dieser Ansatz bietet eine flexible und effiziente Lösung für die Verwaltung und Abfrage hierarchischer Daten in SQL Server 2005.
Das obige ist der detaillierte Inhalt vonWie kann ich hierarchische Daten in SQL Server 2005 ohne CONNECT_BY effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!