ich eine ‚Aufgabe‘ Tabelle mit den folgenden Spalten habe (die Taskorder ist es, die Kinder im Rahmen der Mutter für die Bestellung, nicht die gesamte Tabelle):Reihenfolge Hierarchie aus rekursiven Abfrageergebnissen in SQL 2005
TaskId ParentTaskId TaskName TaskOrder
ich habe diese CTE-Abfrage habe alle Zeilen zurückgeben:
with tasks (TaskId, ParentTaskId, [Name]) as
(
select parentTasks.TaskId,
parentTasks.ParentTaskId,
parentTasks.[Name]
from Task parentTasks
where ParentTaskId is null
union all
select childTasks.TaskId,
childTasks.ParentTaskId,
childTasks.[Name]
from Task childTasks
join tasks
on childTasks.ParentTaskId = tasks.TaskId
)
select * from tasks
Diese Abfrage liefert alle von ihrem Niveau bestellt Aufgaben wie man erwarten würde. Wie kann ich es ändern, um die Ergebnisse in ihre hierarchische Reihenfolge wie folgt zu ordnen?
- Task 1 -- Task 1 Subtask 1 -- Task 1 Subtask 2 - Task 2 - Task 3
Danke.
Bearbeiten: Die Antwort sollte mit einer unbegrenzten Anzahl von Ebenen arbeiten.
Experimentieren Sie nur mit CTEs, oder ist das einfacher als reines SQL? – dkretz
Ja, experimentieren mit CTE, aber wenn es eine bessere Lösung mit geraden SQL gibt werde ich das verwenden .. – Nick