Вот полный пример набора данных для этого запроса без какой-либо обрезки деревьев, где ни один узел не соответствует строке поиска:
Level parent id text --------------------------------------------- 0 0 1 toplevel 1 1 2 foo 1 1 3 sumthin else 1 1 4 foo 0 0 7 toplevel2 1 7 8 secondlevel 1 7 9 anothersecondlevel
Мне нужно вернуть следующее, если пользователь ищет «foo»:
0 0 1 toplevel 1 1 2 foo 1 1 4 foo
Реальный случай немного сложнее (т. е. три уровня в дереве, которые я хочу вернуть), но это отражает проблему. На английском языке возвращает дерево предков для узла, который соответствует строке поиска, начинающейся с соответствующего узла в текстовом столбце, и возвращает всех предков.
Я новичок в Oracle (по крайней мере, недавно) и безуспешно пытался добавить в предложение CONNECT BY - всегда возвращает следующее:
1 1 2 foo 1 1 4 foo
PS - документы и примеры оракула подразумевают, что CONNECT_BY_ROOT будет захватывать предков, но все, что он делает, это возвращает значения верхнего уровня (ROOT).