J'ai une table « tâche » avec les colonnes suivantes (le TaskOrder est pour commander les enfants dans le cadre de la société mère, pas la table entière):Commande hiérarchie des résultats de requête récursive dans SQL 2005
TaskId ParentTaskId TaskName TaskOrder
J'ai cette requête CTE pour retourner toutes les lignes:
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
cette requête renvoie toutes les tâches ordonnées par leur niveau que vous attendez. Comment puis-je le modifier pour ordonner les résultats dans leur ordre hiérarchique comme ci-dessous?
- Task 1 -- Task 1 Subtask 1 -- Task 1 Subtask 2 - Task 2 - Task 3
Merci.
Modifier: La réponse devrait fonctionner avec un nombre illimité de niveaux.
Expérimentez-vous simplement avec des CTE, ou est-ce plus simple pour vous que le SQL? – dkretz
Oui, j'expérimente avec CTE, mais s'il y a une meilleure solution avec SQL direct, je vais l'utiliser .. – Nick