2016-07-16 24 views
0

我在SQL Server数据库中有两个表,FolderFile获取所有子文件夹和文件的存储过程

enter image description here

enter image description here

我需要一个存储过程返回我的文件夹中的所有文件和文件夹。

实施例:

exec GetFileAndFolders @FolderID 

Declare @FolderID uniqueidentifier 
set @FolderID = 'b575050d-374b-e611-9d2c-000c29e7670f' 

;WITH hierarchy_cte (ID, Name, ParentID) as 
(
    SELECT 
     e.folderId, e.name, e.parentId 
    FROM 
     folder as e 
    WHERE 
     e.folderId = @FolderID 

    UNION ALL 

    SELECT 
     e.folderId, e.name, e.parentId 
    FROM 
     folder as e 
    INNER JOIN 
     hierarchy_cte as h ON h.ParentID = e.folderId 
) 
SELECT ID FROM hierarchy_cte 
+0

你有任何SQL来显示你已经尝试过,为什么它不工作?如果您搜索它,互联网上也有大量的帮助;尝试谷歌与“sql递归查询” – Tony

+0

我有一个CTE与我找到一个文件夹表的所有孩子,但我想在文件表上做一个连接,以便我得到一个文件夹内的所有文件和文件夹。 – user2272865

+0

请添加您对问题的代码。 – Tony

回答

1

的另一种方法来解决这个问题将是把所有的对象(文件和文件夹)的一个单一的表;用属性来表示什么是文件夹。这就是Windows,Linux,Mac等文件系统如何处理这个问题。

然后,您现有的代码将查找所有文件和文件夹,并使用其他属性(列)来表示文件夹是什么。

相关问题