WITH Hierarchy(TaskID, [Subject], ParentID)
AS
(
SELECT
TaskID,
[Subject],
ParentID
FROM
PMA_Task
WHERE
TaskID = 258
UNION ALL
SELECT
SubDepartment.TaskID,
SubDepartment.[Subject],
SubDepartment.ParentID
FROM
PMA_Task SubDepartment
INNER JOIN
Hierarchy ParentDepartment
ON
SubDepartment.TaskID = ParentDepartment.ParentID
)
SELECT
TaskID,
[Subject],
ParentID
FROM
Hierarchy
ORDER BY
TaskID
WITH Hierarchy(TaskID, [Subject], ParentID, HLevel)
AS
(
SELECT
TaskID,
[Subject],
ParentID ,
0 as HLevel
FROM
PMA_Task
WHERE
TaskID = @TaskID
UNION ALL
SELECT
SubDepartment.TaskID,
SubDepartment.[Subject],
SubDepartment.ParentID ,
HLevel + 1
FROM
PMA_Task SubDepartment
INNER JOIN
Hierarchy ParentDepartment
ON
SubDepartment.TaskID = ParentDepartment.ParentID
)
SELECT
TaskID,
[Subject],
ParentID,
HLevel
FROM
Hierarchy
ORDER BY
HLevel DESC
However, after reading chapmandew's article (and even though I barely understood it bc I'm not a hardcore SQL guy) he's got me scared about the whole "recursion - blocking" thing.
chapmandew - do you have a simple example of how to accomplish what you are doing? I didn't know how the original table should be set up to play around with your example in your article.
Open in new window