sql >> Databasteknik >  >> RDS >> Sqlserver

Ordningshierarki från rekursiv fråga resulterar i SQL 2005

Ett sätt du kan göra detta är att lägga till en hierarkikolumn som har alla tidigare ID:n i en lista:

with tasks (TaskId, ParentTaskId, [Name], TaskIdList) as
(
    select parentTasks.TaskId,
           parentTasks.ParentTaskId,
           parentTasks.[Name],
           parentTasks.TaskId
    from   Task parentTasks
    where  ParentTaskId is null

    union all

    select childTasks.TaskId,
           childTasks.ParentTaskId,
           childTasks.[Name],
           tasks.TaskIdList + '.' + childTasks.TaskId
    from   Task childTasks
    join   tasks
    on     childTasks.ParentTaskId = tasks.TaskId
)

select TaskId, ParentTaskId, [Name] from tasks
   order by TaskIdList

Observera att detta förutsätter att TaskId är ett strängbaserat ID. Om inte, bör du gjuta den till en varchar innan du sammanfogar den.



  1. Det gick inte att byta namn på en kolumn i MySQL

  2. Inkluderar Custom SELECT-satsen i ActiveRecord-frågan

  3. Anslutning pooling vs beständig anslutning mysqli

  4. Arkitekturimplementering och design för ett meddelandesystem som använder socket.io node.js och inkommande meddelanden