Иерархический запрос соединяется с помощью предложения start with - PullRequest
0 голосов
/ 22 февраля 2019

Данные, с которыми я работаю, упорядочены, как в следующем примере:

Пример

Что я хочу знать, это:

Хочу

Что я получу из моего запроса, так это (фактический запрос с фактическими данными размещен в конце этого сообщения):

Получить

Это код, который у меня сейчас есть, и я чувствую, что он близок к тому, чтобы дать мне то, что я хочу.

select * from (выберите отличный id, idnew, CONNECT_BY_ROOT idlast, CONNECT_BY_ISLEAF "IsLeaf",CONNECT_BY_ISCYCLE iscycle, уровень seq_order из mytable tbl1 соединяется с помощью NOCYCLE idnew = предыдущий идентификатор, начало которого не существует (выберите 1 из mytable tbl2, где tbl2.itemloadid = tbl.itemloadidnew)) abc заказ по abc.idlast, seq_order desc * 10 * 21 * 10Вывод, который я получаю из этого кода, таков:

Вывод

Как мне убедиться, что первое значение моих последовательностей интерпретируется как корни (а не каквыходит как сегодня)?Насколько я понимаю, если они интерпретируются как корни, я могу напечатать столбец с id_first, а не с id_last, который у меня есть сегодня.

Помощь очень ценится!:)

1 Ответ

0 голосов
/ 22 февраля 2019

Вы должны инвертировать connect by предложение:

select t.*, connect_by_root(id) id_first
  from mytable t 
  start with not exists (select 1 from mytable x where x.id_new = t.id)
  connect by id = prior id_new

Демо-версия dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...