フォルダとファイルの2つのテーブルがあります。各テーブルには、ParentID、ID、Name、Typeの4つのフィールドがあります。
T-SQLを使用してツリー全体を一度に取得するには、CTEを作成する必要があります。これまでのところ、これは私が行ったことですが、再帰はまだアクティブではありません。
フォルダ内に1つ以上のフォルダ/ファイルがある可能性があることを忘れました。
フォルダとファイルの2つのテーブルがあります。各テーブルには、ParentID、ID、Name、Typeの4つのフィールドがあります。
T-SQLを使用してツリー全体を一度に取得するには、CTEを作成する必要があります。これまでのところ、これは私が行ったことですが、再帰はまだアクティブではありません。
フォルダ内に1つ以上のフォルダ/ファイルがある可能性があることを忘れました。
ルート内のアイテムに使用NULL
していると仮定すると、次のように機能するはずです。ParentID
WITH FilesAndFolders AS (
SELECT ID AS FileID,
CAST(NULL AS int) AS FolderID,
ParentID,
Name,
[Type]
FROM File
UNION ALL
SELECT CAST(NULL AS int),
ID,
ParentID,
Name,
[Type]
FROM Folder
),
Tree AS (
SELECT FileID,
FolderID,
Name,
[Type],
CAST('' AS nvarchar(MAX)) AS [Path]
FROM FilesAndFolders
WHERE ParentID IS NULL
UNION ALL
SELECT FF.FileID,
FF.FolderID,
FF.Name,
FF.[Type],
T.[Path]+T.[Name]+'/'
FROM FilesAndFolders FF
JOIN Tree T ON T.FolderID = FF.ParentID
)
SELECT FileID, FolderID, [Path]+[Name] FullName, [Type]
FROM Tree