Запрос Oracle CONNECT_BY.

SELECT LPAD('*', 2*level-1)||SYS_CONNECT_BY_PATH(unit_data, '/') "battle_unit_id"
   FROM battle_units
   START WITH battle_unit_id= 600
   CONNECT BY PRIOR parent_id = battle_unit_id;

возвращается

/Doctrine
  /Doctrine/Air
    /Doctrine/Air/Jet powered aircraft
       /Doctrine/Air/Jet powered aircraft/F-16

Все, что я хочу, это просто /Doctrine/Air/Jet powered aircraft/F-16 без остальных трех результатов. Есть ли способ для этого?

Редактировать:

Моя версия оракула:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Производственная версия
PL / SQL Release 11.2.0.3.0 - Производственная
CORE 11.2.0.3.0 Производственная
TNS для Linux: версия 11.2.0.3.0 - Производство
НЛСРТЛ Версия 11.2.0.3.0 - Производство


person bouncingHippo    schedule 15.04.2014    source источник
comment
какая это версия оракула?   -  person abhi    schedule 15.04.2014
comment
11g более подробная информация указана выше   -  person bouncingHippo    schedule 15.04.2014
comment
Попробуйте это   -  person abhi    schedule 15.04.2014


Ответы (2)


Если я вас правильно понял, вам просто нужны листья на дереве:

SELECT LPAD('*', 2*level-1)||SYS_CONNECT_BY_PATH(unit_data, '/') "battle_unit_id"
FROM battle_units 
WHERE connect_by_isleaf = 1  -- <<< this selects only the leaf nodes
START WITH battle_unit_id= 600
CONNECT BY PRIOR battle_unit_id = parent_id;

Подробнее см. В руководстве: http://docs.oracle.com/cd/E11882_01/server.112/e26088/pseudocolumns001.htm#SQLRF00251.

person a_horse_with_no_name    schedule 15.04.2014
comment
если бы я заменил CONNECT BY PRIOR gdi_schema_id = parent_id на CONNECT BY PRIOR parent_id = gdi_schema_id;, новая замена даст результат _3 _..., что почти то, что я хочу - person bouncingHippo; 16.04.2014
comment
связанные вопросы stackoverflow.com/questions/23111378/ - person bouncingHippo; 16.04.2014

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

См. эту скрипку.

Изменить: поскольку вы собираетесь использовать максимум, это может сработать для вас.

person abhi    schedule 15.04.2014
comment
скажем, мне нужен максимальный уровень, но я не знаю, сколько там уровней. как это сделать? - person bouncingHippo; 16.04.2014