我就是不能把头绕在这上面.Server中有三个相关的表:
FileIds
Id
FileNameFolderIds
Id
ParentId
FolderNameFileInfo
Id
FolderId
FileId
FileAuthorId
FileClientId样本数据:
FileIds
1, Gartner
2, Parker
3, SteppFolderIds
1, null, Georgia
2, 1, Atlanta
3, 2, Terminus
4, 3, Suite 1500
5, 4, David Williams
6, 4, Lisa Davidson
7, 2, LaGrange
8, 7, Dena PressleyFileInfo
1, 8, 1, null, null
2, 5, 2, null, null
3, 6, 3, null null从视图中输出的样本:
Georgia.Atlanta.LaGrange.Dena Pressley:Gartner, null, null
Georgia.Atlanta.Terminus.Suite 1500.David Williams:Parker, null, null
Georgia.Atlanta.Terminus.Suite 1500.Lisa Davidson:Stepp, null, null虽然这不是针对文件目录的,但它的布局类似于一个目录(替换.s和: is with \'s),我需要创建一个显示完整路径的视图.将这些部分放在代码(如C# )中是很容易的,但我似乎不知道如何在SQL中实现它。我已经查找了Server的递归CTE,但我没有得到它。
发布于 2018-02-16 17:07:16
这应该允许您开始使用递归CTE:
在这里,我只添加文件夹,但您可以完全相同,在另一个CTE中添加文件
WITH folders (Id, ParentId, FolderName)
AS (
-- In here you select the first LEVEL
SELECT Id, ParentId, FolderName FROM FolderIds
WHERE ParentId IS NULL
UNION ALL
-- In here you join the previous LEVEL with new relative LEVELS
SELECT b.Id, b.ParentId, a.FolderName CONCAT ' ' CONCAT b.FolderName
FROM folders a
INNER JOIN FolderIds b
ON a.Id = b.ParentId
)
SELECT *
FROM foldershttps://stackoverflow.com/questions/48830981
复制相似问题