> 1 <
| Автор | Сообщение |
|
sl8er
[1] Участник
|
|
| ©2758 2007-12-11 12:02 GMT | |
|
Есть иерархическая табличка (ID NUMBER, ID_PARENT NUMBER, NAME VARCHAR, TYPE VARCHAR - "COUNTRY", "REGION", "CITY", "STREET") справочника адресов, уровень вложенности максимум 4 (страна, регион, город, улица) Есть код записи (глубина вложенности неизвестна), необходимо найти все значения, соответствующие этой записи (если искомый пункт - улица, то названия страны, региона, города, улицы; если искомый пункт - регион, то названия страны, региона, а город и улица - NULL) и желательно, чтобы это работало побыстрей, т.к. это будет производиться в запросе на большую таблицу. Спасибо большое заранее.
|
|
|
Delta
[99] ServerOp
|
|
| ©2759 2007-12-12 11:50 GMT | |
|
типа так... Код: select * from (select level, replace(sys_connect_by_path(decode(level,4,val),'/'), '/')||', '|| replace(sys_connect_by_path(decode(level,3,val),'/'), '/')||', '|| replace(sys_connect_by_path(decode(level,2,val),'/'), '/')||', '|| replace(sys_connect_by_path(decode(level,1,val),'/'), '/') from ( select 0 ID,null PARENT_ID, 'Россия' VAL,'COUNTRY' TYPE_ from dual union select 1,0, 'Тюменская обл','REGION' from dual union select 2,1, 'Сургут','CITY' from dual union select 3,2, 'Ленина','STREET' from dual union select 4,0, 'Приморский край','REGION' from dual union select 5,4, 'Владивосток','CITY' from dual union select 6,5, 'Ленина','STREET' from dual) t connect by prior parent_id = id start with ID = 6 order by level desc ) where rownum = 1 Пожалуйста
Если не можешь выиграть, нужно менять правила игры. |
|
|
sl8er
[1] Участник
|
|
| ©2760 2007-12-12 15:54 GMT | |
Немного не так. В случае, если искомый ID является не улицей, а, например, областью, то результирующая строчка возвращается в видеЦитата а должна в виде Цитата Соответственно, если город, то Цитата вместо Цитата Вот (
|
|
|
sl8er
[1] Участник
|
|
| ©2762 2007-12-12 16:51 GMT | |
|
Блин, ну переделать в такое я бы и сам смог ) Совсем разленился ( Спасибо большое ))))
|
> 1 <

