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