鉴于我有这个结果集结构(已剥离多余字段),请参见以下内容:
我能想到的唯一方法就是按照这篇文章的方式进行操作 - 使用嵌套集提高层次结构性能 并且在每个记录中包含
如何更改此代码以允许具有重复
Id | ParentId | Name | Depth
----------------------------
是否可以按照树形顺序返回记录,即首先是Parent
,然后是Children
,如果一个Child
是Parent
,那么再是他们的Children
,否则就是Sibling
等等?例如:
Id | ParentId | Name | Depth
----------------------------
1 NULL Major 1
2 1 Minor 2
3 1 Minor 2
4 3 Build 3
5 3 Build 3
6 1 Minor 2
/* etc, etc */
我能想到的唯一方法就是按照这篇文章的方式进行操作 - 使用嵌套集提高层次结构性能 并且在每个记录中包含
[LeftExtent]
和[RightExtent]
字段。现在,当Ids
是唯一的时,该文章中的SQL工作正常,但在这种特定的树形结构中,具有相同Id
的记录可以出现在树的不同位置(显然,ParentId
字段不同)。我认为问题出在这篇文章中的SQL中 - INSERT INTO @tmpStack
(
EmployeeID,
LeftExtent
)
SELECT TOP 1 EmployeeID, @counter
FROM Employee
WHERE ISNULL(ParentID, 0) = ISNULL(@parentid,0)
/* If the Id has already been added then record is not given [LeftExtent] or [RightExtent] values. */
AND EmployeeID NOT IN (SELECT EmployeeID FROM @tmpStack)
如何更改此代码以允许具有重复
Ids
的记录具有[LeftExtent]和[RightExtent]值,或者我完全错过了以我所需的顺序返回结果集的更简单的方法?