2010-10-05 21 views
2

我有一個表Folders與層次信息有關文件夾:如何用SQL-Server 2000查詢分層信息?

FolderID  FolderName  ParentID 
1   Folder1  0 
2   Folder2  1 
3   Folder3  2 
4   Folder4  3 

對於Folder4我想獲得在以下格式的父文件夾:

Folder1\Folder2\Folder3\ 

注:我問過這個before,但是我不能使用CTE,因爲我正在使用SQL-Server 2000.

+0

我試圖改寫你的問題,希望能幫助你得到答案。 – 2010-10-05 13:07:07

回答

1

我寫了一個SQL函數,應該返回你正在尋找的東西。

/* Set up test data */ 
create table Folders (
    FolderID int, 
    FolderName varchar(10), 
    ParentID int 
) 

insert into Folders 
    (FolderID, FolderName, ParentID) 
    select 1,'Folder1',0 union all 
    select 2,'Folder2',1 union all 
    select 3,'Folder3',2 union all 
    select 4,'Folder4',3   
go 

/* Create function */ 
create function dbo.CreateFolderPath (@FolderID int) 
returns varchar(1000) 
as 
begin 
    declare @ParentID int 
    declare @FolderPath varchar(1000) 
    set @FolderPath = '' 

    select @ParentID = ParentID 
     from Folders 
     where FolderID = @FolderID 

    while @ParentID<>0 begin 
     select @FolderPath = FolderName + '\' + @FolderPath, @ParentID = ParentID 
      from Folders 
      where FolderID = @ParentID 
    end /* while */ 

    return @FolderPath 
end /* function */ 
go 

/* Demo the function */ 
select dbo.CreateFolderPath(4) 

/* Clean up after demo */ 
drop function dbo.CreateFolderPath 
drop table Folders 
+1

@Adu:如果這個答案解決了你的問題,那麼對它進行投票並感謝作者將是一個很好的舉動來紀念他爲你投資的時間...... – 2010-10-05 14:45:01

+0

@Peter Lang:並且感謝你,以及爲您的工作編輯原始問題。 – 2010-10-05 14:56:55