>
> Тогда запрос выбирающий дерево будет:
> 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

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

Ответить