Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mendapatkan Data Hierarki dengan Cekap daripada Jadual Rujukan Kendiri dalam SQL Server 2005?

Bagaimanakah Saya Boleh Mendapatkan Data Hierarki dengan Cekap daripada Jadual Rujukan Kendiri dalam SQL Server 2005?

Barbara Streisand
Lepaskan: 2024-12-25 08:48:11
asal
294 orang telah melayarinya

How Can I Efficiently Retrieve Hierarchical Data from a Self-Referencing Table in SQL Server 2005?

Menavigasi Data Hierarki dalam SQL Server 2005

Mendapatkan semula data hierarki daripada SQL Server 2005 boleh menjadi mencabar, terutamanya apabila berurusan dengan rujukan sendiri jadual di mana rekod kanak-kanak menunjuk kepada ID ibu bapa mereka. Walaupun pandangan dan pertanyaan kompleks lazimnya digunakan, mereka sering tidak mempunyai keanggunan dan kecekapan.

Satu penyelesaian memanfaatkan Common Table Expression (CTE) untuk membina struktur hierarki dan menjana laluan untuk setiap item. Pendekatan ini melibatkan mencipta CTE bernama Parent yang bermula dengan memilih nod akar (ParentID ialah NULL) dan nama mereka sebagai laluan. Ia kemudian menambah nod anak secara rekursif, menggabungkan nama mereka ke laluan induk.

Kod berikut menunjukkan pendekatan ini:

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

CTE ini mencipta jadual hierarki dengan Laluan lajur tambahan yang mengandungi laluan lengkap ke setiap nod. Output pertanyaan yang terhasil ialah:

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

Pendekatan ini menyediakan cara yang bersih dan cekap untuk mendapatkan semula data hierarki daripada jadual rujuk kendiri dalam SQL Server 2005. Ia menghapuskan keperluan untuk pertanyaan manual yang kompleks dan membolehkan navigasi hierarki yang lebih mudah.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Data Hierarki dengan Cekap daripada Jadual Rujukan Kendiri dalam SQL Server 2005?. 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