LINUX.ORG.RU

SQL - иерархическая выборка «вверх»


0

1

Есть иерархическая таблица (id, parent_id, value). Известен id одной из записей где-то в середине иерархии. Нужно найти родительскую запись (перебором установлено, что она обычно близко к вершине иерархии), которая удовлетворяет условию (value='value').
СУБД - Oracle. Версия - хз, скорее всего девятка.

★★★★★
Ответ на: комментарий от anonymous

Зачем вложенные запросы? Оракл накладывает фильтр после иерархической выборки, за исключением объединения таблиц.

SELECT * FROM region_l WHERE value = :value CONNECT BY prior parent_id = id START WITH id = :id 


http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_10002.htm#i2066102

anonymous
()
SELECT  X.x_id	
  FROM x X
   START WITH X.x_id = in_x_id 
   CONNECT BY PRIOR X.x_id = X.master_x_id

Это ЕМНИП вытащит всех предков по in_x_id, дальше сам думай, т.к. мне сейчас лень :). Если нужны потомки или наоборот предки - меняешь местами X.x_id и X.master_x_id в равенстве, кажись так это работает.

gandjubas
()
Ответ на: комментарий от anonymous

Ага. Просто я читал примеры по CONNECT BY PRIOR, там везде была выборка вниз. Завтра попробую, спасибо.

Xellos ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.