Heim > Datenbank > MySQL-Tutorial > Wie kann ich hierarchische Daten in SQL Server 2005 effizient abrufen?

Wie kann ich hierarchische Daten in SQL Server 2005 effizient abrufen?

Susan Sarandon
Freigeben: 2024-12-30 14:06:14
Original
196 Leute haben es durchsucht

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

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage