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!