Hierarchischer Datenabruf in SQL Server 2005
Viele Entwickler haben Schwierigkeiten mit dem Abrufen hierarchischer Daten aus SQL Server 2005, insbesondere wenn sie mit komplexen Objekthierarchien arbeiten . Dies ist in erster Linie auf das Fehlen einer CONNECT_BY-Klausel zurückzuführen, einer leistungsstarken Funktion, die in Oracle-Datenbanken für hierarchische Abfragen verfügbar ist.
Ein Ansatz besteht darin, eine selbstreferenzierende Tabelle mit einer Spalte zu erstellen, die die ID des übergeordneten Elements für jeden untergeordneten Datensatz enthält . Eine Ansicht kann dann verwendet werden, um untergeordnete Elemente Hierarchieebenen zuzuordnen. Darüber hinaus kann eine komplexe Abfrage eingesetzt werden, um Eltern mit Kindern zu verbinden. Obwohl diese Methode funktionsfähig ist, kann sie umständlich und ineffizient sein.
Eine elegantere Lösung für hierarchische Abfragen in SQL Server 2005 ist die Nutzung von Common Table Expressions (CTEs). Mit CTEs können Sie temporäre Tabellen innerhalb einer Abfrage erstellen, die für komplexe hierarchische Strukturen verwendet werden können.
Das folgende Beispiel zeigt, wie Sie eine hierarchische Tabelle erstellen und einen CTE verwenden, um die Hierarchiestruktur auszuwählen und einen Pfad dafür zu erstellen jedes Element:
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
Dieser Ansatz bietet eine effizientere und präzisere Lösung für Abrufen hierarchischer Daten in SQL Server 2005, wodurch komplexe Abfragen überflüssig werden und Sie effektiver mit Hierarchien arbeiten können.
Das obige ist der detaillierte Inhalt vonWie kann ich hierarchische Daten in SQL Server 2005 effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!