2016-07-16 13 views
0

Ich habe zwei Tabellen in SQL Server-Datenbank, Folder und File.Gespeicherte Prozedur, um alle Unterordner und Dateien zu erhalten

enter image description here

enter image description here

Ich brauche eine gespeicherte Prozedur, die mir alle Dateien und Ordner in einem Ordner zurückgibt.

Beispiel:

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

Haben Sie SQL, um zu zeigen, was Sie versucht haben und warum es nicht funktioniert? Es gibt auch eine Menge Hilfe im Internet, wenn Sie danach suchen; versuche Google mit "sql recursive query" – Tony

+0

Ich habe ein CTE, mit dem ich alle childs einer Ordnertabelle finde, aber ich möchte auch eine Join-Datei-Tabelle machen, so dass ich alle Dateien und Ordner innerhalb eines Ordners bekomme. – user2272865

+0

Bitte fügen Sie den Code, den Sie zu der Frage haben. – Tony

Antwort

1

Ein alternativer Weg, um das Problem zu nähern, wäre es, alle Objekte zu setzen (Dateien und Ordner) in einer einzigen Tabelle; mit einem Attribut, um anzuzeigen, was ein Ordner ist. So umgehen Dateisysteme in Windows, Linux, Mac usw. das Problem.

Dann würde Ihr vorhandener Code alle Dateien und Ordner finden, mit einem zusätzlichen Attribut (Spalte), um anzuzeigen, was ein Ordner ist.