我可以在分层数据模型中找到给定记录的所有子项(请参阅下面的代码),但是我不知道如何通过给定的子代码来备份父/子链.任何人都可以指出正确的方向,找出如何做到这一点?在
Linq到sql中也是可能的吗?
WITH TaskHierarchy (TaskID,[Subject],ParentID,HierarchyLevel,HierarchyPath) AS ( -- Base case SELECT TaskID,1 as HierarchyLevel,CONVERT(VARCHAR(MAX),'/') AS HierarchyPath FROM Task WHERE TaskID = 2 UNION ALL -- Recursive step SELECT t.TaskID,t.Subject,t.ParentID,th.HierarchyLevel + 1 AS HierarchyLevel,CONVERT(varchar(MAX),th.HierarchyPath + CONVERT(VARCHAR(32),t.ParentID) + '/') AS HierarchyPath FROM Task t INNER JOIN TaskHierarchy th ON t.ParentID = th.TaskID ) SELECT * FROM TaskHierarchy ORDER BY HierarchyLevel,[Subject]
解决方法
啊,我想出来了
WITH Hierarchy(TaskID,IsProject,HLevel) AS ( SELECT TaskID,0 as HLevel FROM Task WHERE TaskID = 59 UNION ALL SELECT SubDepartment.TaskID,SubDepartment.[Subject],SubDepartment.ParentID,SubDepartment.IsProject,HLevel + 1 FROM Task SubDepartment INNER JOIN Hierarchy ParentDepartment ON SubDepartment.TaskID = ParentDepartment.ParentID ) SELECT TaskID,HLevel FROM Hierarchy ORDER BY HLevel DESC
原文地址:https://www.jb51.cc/mssql/82141.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。