Моя таблица имеет крошку, похожую на файловую систему для отображения навигации по страницам. Например <level1> / <level2> / <level3>
. Я хочу начать с любого уровня <level1>
и перейти к дочерней <level1> / <level2>
крошке. Мне все равно, идет ли речь сначала о ширине или глубине, мне просто нужно следовать иерархии, чтобы я мог записывать родительские дочерние элементы для другой цели.
Мои попытки дают мне только первый уровень и останавливаются.
create table sc_hub_hierarchy_test (breadcrumb varchar2(1000),child_breadcrumb varchar2(1000),crumb_depth);
insert into sc_hub_hierarchy_test (breadcrumb,child_breadcrumb) values('Level1A','Level1A/Level2A',0);
insert into sc_hub_hierarchy_test (breadcrumb,child_breadcrumb) values('Level1B','Level1B/Level2A',0);
insert into sc_hub_hierarchy_test (breadcrumb,child_breadcrumb) values('Level1B','Level1B/Level2B',0);
insert into sc_hub_hierarchy_test (breadcrumb,child_breadcrumb) values('Level1A/Level2A','Level1A/Level2A/Level3A',2);
select breadcrumb
from sc_hub_hierarchy_test
start with crumb_depth=0
connect by breadcrumb=child_breadcrumb;
Также пробовал:
select breadcrumb
from sc_hub_hierarchy_test
start with crumb_depth=0
connect by prior breadcrumb=child_breadcrumb;
Мои результаты были такими, как показано ниже:
Level1A
Level1B
Level1B
Level1A
** Обратите внимание, фактические данные, используемые для упрощения вопроса.
В моих данных имеется более одного root, поэтому, если предложение «начать с» было изменено на предложение «где», будет возвращено несколько строк. Существует более одного уровня.
Я также попытался удалить предложение «начать с» и получил больше результатов. Поведение такое, как будто оно применяет условие в предложении «начать с» к каждому уровню.
Почему Ларри Эллисон решил остановиться после первого шага?