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

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

Barbara Streisand
Freigeben: 2024-12-20 12:02:17
Original
342 Leute haben es durchsucht

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

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

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!

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