從SQL Server 2005 擷取分層資料
由於SQL Server 2005 中缺少熟悉的CONNECT_BY 子句,擷取資料可能會擷取分層資料可能會帶來挑戰。一種常見的方法是建立一個遞歸公用表表達式 (CTE),它遍歷層次結構並建構所需的輸出。
考慮包含物件層次結構的自引用表的範例,其中每個子記錄都有一個欄位及其父級 ID。 CTE 可用於擷取層次關係並為每個專案建立路徑:
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
輸出:
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
透過利用CTE,我們可以遞歸地遍歷層次結構,累積每個項目的路徑,並以結構化的方式輕鬆檢索所需的層次結構資料。這種方法為管理和查詢 SQL Server 2005 中的分層資料提供了靈活且有效率的解決方案。
以上是如何在不使用CONNECT_BY的情況下有效率地檢索SQL Server 2005中的分層資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!