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
Lepaskan: 2024-12-30 14:06:14
asal
196 orang telah melayarinya

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

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!

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