2010-10-05 5 views
2

J'ai une table Folders avec des informations hiérarchiques sur les dossiers:Comment interroger des informations hiérarchiques avec SQL Server 2000?

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

Pour Folder4 Je voudrais obtenir les dossiers parents dans le format suivant:

Folder1\Folder2\Folder3\ 

Note: J'ai demandé cette before, mais je ne peux pas utiliser CTE parce que j'utilise SQL-Server 2000.

+0

J'ai essayé de réécrire votre question, j'espère que cela vous aidera à obtenir une réponse. –

Répondre

1

J'ai écrit une fonction SQL qui devrait retourner ce que vous cherchez.

/* 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: Si cette réponse résout votre problème, alors en votant et en remerciant l'auteur serait une bonne initiative pour honorer le temps qu'il a investi pour vous ... –

+0

@Peter Lang: Et un merci à vous aussi pour votre travail en éditant la question originale. –