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

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

Susan Sarandon
Susan Sarandonasal
2024-12-30 14:06:14216semak imbas

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

Pendapatan Data Hierarki dalam SQL Server 2005

Ramai pembangun bergelut dengan mendapatkan semula data hierarki daripada SQL Server 2005, terutamanya apabila berurusan dengan hierarki objek yang kompleks . Ini disebabkan terutamanya oleh kekurangan klausa CONNECT_BY, ciri berkuasa yang tersedia dalam pangkalan data Oracle untuk pertanyaan hierarki.

Satu pendekatan ialah membuat jadual rujuk kendiri dengan lajur yang mengandungi ID ibu bapa untuk setiap rekod anak . Paparan kemudiannya boleh digunakan untuk memetakan kanak-kanak ke tahap hierarki. Selain itu, pertanyaan kompleks boleh digunakan untuk menghubungkan ibu bapa dengan anak-anak. Walaupun kaedah ini berfungsi, ia boleh menyusahkan dan tidak cekap.

Penyelesaian yang lebih elegan untuk pertanyaan hierarki dalam SQL Server 2005 ialah memanfaatkan Ungkapan Jadual Biasa (CTE). CTE membolehkan anda membuat jadual sementara dalam pertanyaan, yang boleh digunakan untuk struktur hierarki yang kompleks.

Contoh berikut menunjukkan cara mencipta jadual hierarki dan menggunakan CTE untuk memilih struktur 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

Pendekatan ini menyediakan pendekatan yang lebih cekap dan penyelesaian ringkas untuk mendapatkan semula data hierarki dalam SQL Server 2005, menghapuskan keperluan untuk pertanyaan kompleks dan membolehkan anda bekerja dengan hierarki dengan lebih berkesan.

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