2016-07-16 3 views
0

У меня есть две таблицы в базе данных SQL Server, Folder и File.Сохраненная процедура для получения всех подпапок и файлов

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, чтобы показать, что вы пробовали, и почему он не работает? В Интернете вы также можете найти большую помощь, если найдете ее; попробуйте Google с «рекурсивным запросом sql» – Tony

+0

У меня есть CTE, с которым я нахожу все дочерние элементы таблицы папок, но я также хочу сделать соединение с файловой таблицей, чтобы получить все файлы и папки в папке. – user2272865

+0

Пожалуйста, добавьте код, который у вас есть к вопросу. – Tony

ответ

1

Альтернативный способ подойти к проблеме было бы поместить все объекты (файлы и папки) в одной таблице; с атрибутом для обозначения того, что является папкой. Это проблема с файловыми системами в Windows, Linux, Mac и т. Д.

Тогда ваш существующий код обнаружит все файлы и папки с дополнительным атрибутом (столбцом), чтобы обозначить, что такое папка.

Смежные вопросы