Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Иерархический запрос. Загвоздка!!! Help PLS  [new]
DVE
Member

Откуда: Москва
Сообщений: 320
Есть данные


N UP NAME
1 0 Предприятие
2 1 Бухгалтерия
---------------------------
итд

есть банальный запрос


select level,x.*
from ddd x
connect by prior n = up
start with x.n in (1,2)

Выдает 3 записи оно то и понятно(стартует с n=1 это 2 записи , и стартует n=1 это 1 запись )!!!!



LEVEL N UP NAME
1 1 0 Предприятие
2 2 1 Бухгалтерия
1 2 1 Бухгалтерия

Но нужно б было только 2 (1-я и 2-я)
чтоб если бухгалтерия есть же с уровнем > 1 то не нужно с нее начинать

Это реально или нет!!!?????
2 ноя 06, 14:13    [3347539]     Ответить | Цитировать Сообщить модератору
 Re: Иерархический запрос. Загвоздка!!! Help PLS  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
where x.n in (1,2)
..
   connect by prior n = up        start with x.n in (1)
2 ноя 06, 14:17    [3347573]     Ответить | Цитировать Сообщить модератору
 Re: Иерархический запрос. Загвоздка!!! Help PLS  [new]
Elic
Member

Откуда:
Сообщений: 29988
select max(level), x.* ... group by x.*
2 ноя 06, 14:25    [3347648]     Ответить | Цитировать Сообщить модератору
 Re: Иерархический запрос. Загвоздка!!! Help PLS  [new]
DVE
Member

Откуда: Москва
Сообщений: 320
2 Elic

Наверное так и сделаю! спасиб! думал чтожно как еже извернуться!
2 ноя 06, 15:03    [3347964]     Ответить | Цитировать Сообщить модератору
 Re: Иерархический запрос. Загвоздка!!! Help PLS  [new]
DVE
Member

Откуда: Москва
Сообщений: 320
Elic
select max(level), x.* ... group by x.*


как в данном случае поддержать "правильную" сортировку типа "order siblings by name" ???????
30 янв 07, 12:31    [3712280]     Ответить | Цитировать Сообщить модератору
 Re: Иерархический запрос. Загвоздка!!! Help PLS  [new]
Elic
Member

Откуда:
Сообщений: 29988
DVE
как в данном случае поддержать "правильную" сортировку типа "order siblings by name" ???????
STFF как оставить в дереве только нужые узлы?
30 янв 07, 12:41    [3712374]     Ответить | Цитировать Сообщить модератору
 Re: Иерархический запрос. Загвоздка!!! Help PLS  [new]
DVE
Member

Откуда: Москва
Сообщений: 320
[quot Elicкак оставить в дереве только нужые узлы?[/quot]

да, но про сортировку там ничего нет!
30 янв 07, 13:23    [3712751]     Ответить | Цитировать Сообщить модератору
 Re: Иерархический запрос. Загвоздка!!! Help PLS  [new]
DVE
Member

Откуда: Москва
Сообщений: 320
сделал так!
раз уж мы берем мах(level)

select max(level), x.* ... group by x.*

то уж точно не будет ничего плохого если возьмем max(rownum), тк повторяющиеся веточки всегода будут либо сверху либо снизу и никогда вперемешку

select * from (
select max(level) as lvl
        ,max(rownum) as RN
        , x.* ... 
                 group by x.* 
                   )
order by RN
30 янв 07, 13:28    [3712787]     Ответить | Цитировать Сообщить модератору
 Re: Иерархический запрос. Загвоздка!!! Help PLS  [new]
Elic
Member

Откуда:
Сообщений: 29988
DVE
да, но про сортировку там ничего нет!
Ты же сам написал, как её сделать в прямом дереве. А там - прямое дерево. В отличие от "тут" - обратного
30 янв 07, 13:28    [3712795]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить