Тогда запрос выбирающий дерево будет:
with recursive TREE as (
   select n.ID, n.PARENT_ID, n.TITLE, n.MODIFY, n.ORD_NUM
   from NODES n
   where n.PARENT_ID is null
   union all
   select n.ID, n.PARENT_ID, n.TITLE, n.MODIFY, n.ORD_NUM
   from NODES n
   inner join TREE t on t.ID = n.PARENT_ID
)
select t.ID, t.PARENT_ID, t.TITLE, t.MODIFY, t.ORD_NUM
from TREE t


Ага, так и есть, сортировка при UNION ALL идет на фиг.
Но прикладная прокто-стоматология не стоит на месте !


WITH RECURSIVE TREE AS (

  SELECT TMP1.ID, TMP1.PARENT_ID, TMP1.TITLE, TMP1.MODIFY, TMP1.ORD_NUM
  FROM   (SELECT N1.ID, N1.PARENT_ID, N1.TITLE, N1.MODIFY, N1.ORD_NUM
          FROM   NODES N1
          WHERE  (N1.PARENT_ID IS NULL)
          ORDER BY N1.TITLE  ASCENDING  -- СОРТИРОВКА
          ) TMP1

  UNION ALL

  SELECT TMP2.ID, TMP2.PARENT_ID, TMP2.TITLE, TMP2.MODIFY, TMP2.ORD_NUM
  FROM   (SELECT N2.ID, N2.PARENT_ID, N2.TITLE, N2.MODIFY, N2.ORD_NUM
          FROM   NODES N2
          ORDER BY N2.TITLE  ASCENDING  -- СОРТИРОВКА
          ) TMP2 INNER JOIN TREE TMP3 ON TMP3.ID = TMP2.PARENT_ID

)
SELECT T.* FROM TREE T

З.Ы. Все, убегаю, а то щаз за советы прибегут бить. =)

Ответить