Главная страница
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.017 c
2-1353673766
AntonMos
2012-11-23 16:29
2013.07.21
daysbetween


3-1286827107
well
2010-10-11 23:58
2013.07.21
Как удалить(заменить) сообщение об удалении записи?


15-1360285956
Кто б сомневался
2013-02-08 05:12
2013.07.21
Медленная отрисовка 2D GDI Windows 7 (в 4.5 раза медленнее XP)


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


15-1362084293
Германн
2013-03-01 00:44
2013.07.21
D-Link DSL-2570