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
Lepaskan: 2024-12-20 12:02:17
asal
341 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan