Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.07.21;
Скачать: CL | DM;

Вниз

Подскажите с PLSQL   Найти похожие ветки 

 
Demo   (2013-03-01 07:48) [0]

Работаю с деревом. Определять все дочерние узлы главной ветки удалось, вот определить корневой узел по одной из ветки не получается, подскажите как это сделать. Спасибо.


 
Sergey Masloff   (2013-03-01 09:10) [1]

Рубанок взять например ;-)
(по твоему посту хрен поймешь с каким ты деревом работаешь)

Конкретизируй что ты делаешь и как (кратким примером) а то экстрасенсы все в отпуске. Ну попробую конечно угадать... prior с другой стороны приставь в условии


 
O'ShinW ©   (2013-03-01 09:21) [2]

вперед
 select * from subscriber s                  
 start with s.up_id = 1617                
 connect by prior s.id_subscriber = s.up_id  
501 1617 ПАРК РАЗВЛЕЧЕНИЙ "ЛИМПОПО", КАФЕ "СКАЗОЧНЫЙ ОСТРОВ"
502 1617 КАФЕ "ВИНИЛ"  АЛЛО(СТАРОЕ_НАЗВАНИЕ)
1618 1617 КАФЕ "КАРАБАС БАРАБАС"

назад  
 select * from subscriber s                  
 start with s.id_subscriber = 501                
 connect by prior  s.up_id  = s.id_subscriber  
501 1617 ПАРК РАЗВЛЕЧЕНИЙ "ЛИМПОПО", КАФЕ "СКАЗОЧНЫЙ ОСТРОВ"
1617  КИНОТЕАТР "КОЛИЗЕЙ" АВТОИНФОРМАТОР


 
Demo   (2013-03-01 09:22) [3]

Дерево строится по принципу ID и PARENT_ID

ID  PARENT_ID   NAME
1   null              Россия
2   1                 Омская область
3   2                 Омск  

В документах Оракл, множество примеров как вытащить все вытекающие узлы из одного узла. Например вытащить все узлы которые находятся под Россией:

SELECT * FROM MY_TABLE
   CONNECT BY PRIOR ID = PARENT_ID
START WITH ID = 1

Вот только не могу найти пример, как вытащить корневой узел "Россиz", по ID Омска.


 
Demo   (2013-03-01 09:26) [4]

O"ShinW ©   (01.03.13 09:21) [2]

Спасибо, вроде то, что надо.


 
Sergey Masloff   (2013-03-01 10:19) [5]

многие почему-то думают что connect by prior это единая конструкция ;-)

на самом деле можно и так

вперед
select * from subscriber s                  
start with s.up_id = 1617                
connect by prior s.id_subscriber = s.up_id  

назад  
select * from subscriber s                  
start with s.id_subscriber = 501                
connect by s.id_subscriber = prior s.up_id  

о чем большевики и говорили в [1]


 
O'ShinW ©   (2013-03-01 10:50) [6]


> многие почему-то думают что connect by prior это единая
> конструкция ;-)
>
> на самом деле можно и так

Сапсибо, не знал

просто некоторые  не заморачивались запоминать оба варианта,
если можно сплясать от одного :)


 
картман ©   (2013-03-01 14:29) [7]


> O"ShinW ©   (01.03.13 09:21) [2]


> Demo   (01.03.13 09:22) [3]

эх, когда ж сиквел сервер так сможет?



Страницы: 1 вся ветка

Текущий архив: 2013.07.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
2-1353673766
AntonMos
2012-11-23 16:29
2013.07.21
daysbetween


2-1353780441
Tcount
2012-11-24 22:07
2013.07.21
Какой браузер по умолчанию, User-Agent.


2-1353340493
toropoff
2012-11-19 19:54
2013.07.21
bass.dll


11-1246891762
Galkov
2009-07-06 18:49
2013.07.21
Про дружбу KOL и FPC


15-1362109704
Demo
2013-03-01 07:48
2013.07.21
Подскажите с PLSQL