我有一張表,其中包含對象的標識符和父項的標識符。它用於保存呈現爲樹的數據對象。我想查詢該表以構建樹中對象的完整路徑。樹的最大深度可能永遠不會超過20個物體。有沒有辦法做到這一點沒有一個while循環...或者是值得試圖避免這種類型/工作量的while循環。在SQL Server中避免while循環
表看起來是這樣的:
CREATE TABLE [dbo].[tblObj] ( [ObjectId] [int] NOT NULL, [ObjectName] [nvarchar](50) NOT NULL, [ParentId] [int] NULL, )
像這樣
insert into tblObj (ObjectId, ObjectName) values (1, 'Root') insert into tblObj (ObjectId, ObjectName, ParentId) values (2, 'Middle1', 1) insert into tblObj (ObjectId, ObjectName, ParentId) values (3, 'Middle2', 2) insert into tblObj (ObjectId, ObjectName, ParentId) values (4, 'Leaf', 3)
期望的結果是使用對象/父關係,建立了反映對象名稱的字符串數據完整路徑。上面的數據將導致路徑「Root \ Middle1 \ Middle2 \ Leaf」
預期結果的例子?無論如何你可能需要一個遞歸CTE。 –