Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Data Hierarki dengan Cekap dalam SQL Server 2005 Tanpa CONNECT_BY?

Bagaimanakah Saya Boleh Mendapatkan Data Hierarki dengan Cekap dalam SQL Server 2005 Tanpa CONNECT_BY?

Barbara Streisand
Barbara Streisandasal
2024-12-20 12:02:17339semak imbas

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

Mengambil Data Hierarki daripada SQL Server 2005

Dengan ketiadaan klausa CONNECT_BY yang biasa dalam SQL Server 2005, mendapatkan semula data hierarki boleh menimbulkan cabaran . Satu pendekatan biasa melibatkan mencipta ungkapan jadual biasa rekursif (CTE) yang merentasi hierarki dan membina output yang diingini.

Pertimbangkan contoh jadual rujuk kendiri yang mengandungi hierarki objek, di mana setiap rekod kanak-kanak mempunyai lajur dengan ID induknya. CTE boleh digunakan untuk mendapatkan semula perhubungan hierarki dan mencipta laluan untuk setiap item:

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

OUTPUT:

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

Dengan menggunakan CTE, kami boleh merentasi hierarki secara rekursif, mengumpul laluan untuk setiap item, dan dengan mudah mendapatkan semula data hierarki yang dikehendaki dalam secara berstruktur. Pendekatan ini menyediakan penyelesaian yang fleksibel dan cekap untuk mengurus dan menanyakan data hierarki dalam SQL Server 2005.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Data Hierarki dengan Cekap dalam SQL Server 2005 Tanpa CONNECT_BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn