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

Откуда:
Сообщений: 195
Всем привет!))

Есть табличка с данными типа:

id||id_preset||pid||level_

столбец level_ имеет значения от 1 до 10.

нужно разложить эту табличку в виде:

id||id_preset при level_=1||id_preset при level_=2 и т.д.

перевязка идет по id_preset=pid

как наиболее правильно разложить таблицу?
28 апр 08, 16:45    [5605185]     Ответить | Цитировать Сообщить модератору
 Re: Разложить таблицу с уровнями  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
имхо, если бы дали пример данных и желаемого - ответ получили бы влёт..
28 апр 08, 16:48    [5605206]     Ответить | Цитировать Сообщить модератору
 Re: Разложить таблицу с уровнями  [new]
Шелепов Дмитрий
Member

Откуда:
Сообщений: 195
пример

К сообщению приложен файл (sample.xls - 13Kb) cкачать
28 апр 08, 16:54    [5605238]     Ответить | Цитировать Сообщить модератору
 Re: Разложить таблицу с уровнями  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
читайте доку про сабж.

(только потому, что, типа, обещал :)
with t as (select 1 id_preset,0 pid from dual
 union all select 10,1 from dual
 union all select 11,1 from dual
 union all select 12,1 from dual
 union all select 13,1 from dual
 union all select 14,1 from dual
 union all select 15,1 from dual
 )
 select id_preset ,prior id_preset
 from t
 start with pid = 0
 connect by prior id_preset = pid
 ;
28 апр 08, 17:03    [5605273]     Ответить | Цитировать Сообщить модератору
 Re: Разложить таблицу с уровнями  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Шелепов Дмитрий
пример
Хотите ответ на VB? :)

sys_connect_by_path + instr
28 апр 08, 17:04    [5605277]     Ответить | Цитировать Сообщить модератору
 Re: Разложить таблицу с уровнями  [new]
Шелепов Дмитрий
Member

Откуда:
Сообщений: 195
orawish, спасибо;)

если уровня 2, то понятно, а вот что делать, если их много))

например
  with t as (select 1 id_preset,0 pid, 1 level_ from dual
 union all select 10,1,1 from dual
 union all select 11,10,2 from dual
 union all select 12,1,1 from dual
 union all select 13,1,1 from dual
 union all select 14,10,2 from dual
 union all select 15,1,1 from dual
 )
 select id_preset ,prior id_preset, level_
 from t
 where level_=1
 start with pid = 0
 connect by prior id_preset = pid


Jannny, спасибо, не стоит))
28 апр 08, 17:16    [5605324]     Ответить | Цитировать Сообщить модератору
 Re: Разложить таблицу с уровнями  [new]
Шелепов Дмитрий
Member

Откуда:
Сообщений: 195
по сути, петля получается....строка одновременно и родитель и дите ...
28 апр 08, 17:19    [5605337]     Ответить | Цитировать Сообщить модератору
 Re: Разложить таблицу с уровнями  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Шелепов Дмитрий
..

например
  with t as (select 1 id_preset,0 pid, 1 level_ from dual
 union all select 10,1,1 from dual
 union all select 11,10,2 from dual
 union all select 12,1,1 from dual
 union all select 13,1,1 from dual
 union all select 14,10,2 from dual
 union all select 15,1,1 from dual
 )
 select id_preset ,prior id_preset, level_
 from t
 where level_=1
 start with pid = 0
 connect by prior id_preset = pid
..

я опять не понял, что надо
это жеж, формально ==
  with t as (select 1 id_preset,0 pid, 1 level_ from dual
 union all select 10,1,1 from dual
 union all select 12,1,1 from dual
 union all select 13,1,1 from dual
 union all select 15,1,1 from dual
 )
 select id_preset ,prior id_preset, level_
 from t
 start with pid = 0
 connect by prior id_preset = pid
..
28 апр 08, 17:23    [5605364]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить