Как я могу Сортировать иерархию нескольких корневых узлов в таблице - PullRequest
0 голосов
/ 22 января 2019

У меня есть следующие heirarchies в БД

A (1)
|_A1 (2)
|  |_A11 (1)
|
|_A2 (1)

и

B (5)
|_B1 (3)
|
|_B2 (1)
   |_B21 (2)
   |_B22 (3)

Я могу добиться таких результатов

Parent    Child   Views
A          A1       2
A1         A11      1
A          A2       1
B          B1       3
B          B2       1
B2         B21      2
B2         B22      3

используя следующий запрос

with w(child, parent, views) as
(
  select 'A', null, 1 from dual
  union all
  select 'A1', 'A', 2 from dual
  union all
  select 'A11', 'A1', 1 from dual
  union all
  select 'A2', 'A', 1 from dual
  union all
  select 'B', null, 5 from dual
  union all
  select 'B1', 'B', 3 from dual
  union all
  select 'B2', 'B', 1 from dual
  union all
  select 'B21', 'B2', 2 from dual
  union all
  select 'B22', 'B2', 3 from dual
)
select parent, child
from w
where level >1
connect by w.parent = prior w.child
start with w.parent is null
;

Теперь я хочу упорядочить по представлениям desc между ('B', null, 5) и ('A', null, 1), прежде чем начинать с ~, как показано ниже

Parent    Child     Views
B          B1         3
B          B2         1   
B2         B21        2
B2         B22        3
A          A1         2
A1         A11        1
A          A2         1

Я пытался изменить запрос вставки позиции 'A' и 'B', но он не был эффективен.

Каким образом я могу искать в иерархии, начиная с «B», а не «A»

У меня были проблемы с этим весь день. пожалуйста, помогите мне

...