Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема... / 4 сообщений из 4, страница 1 из 1
20.10.2008, 13:36
    #35604178
Mb1WA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема...
Есть таблица в которой структура такая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
/*Таблица*/
create table temp(
id integer, 
parent_id integer)

/*Сиквенс для поля ID*/
CREATE SEQUENCE temp_seq
      START WITH  1 
      INCREMENT BY  1 
      NOMAXVALUE
      NOCYCLE
      CACHE  24  
В ней данный в древовидной структуре:
1 null
2 1
3 1
4 2
5 2
Зависимые и починенные. Все как всегда.
А вот как в такой таблице взять ветку такую:
90 85
91 90
92 90
93 92
и сделать допустим такой:
190 170
191 190
192 190
193 192
Так сказать скопировать ветку целиком.
в итоге в таблице должно быть:
90 85
91 90
92 90
93 92
190 170
191 190
192 190
193 192
То есть надо написать что-то типа процедуры в которой два входных параметра id и parent_id.
Но как раскручивать эту ветку и инсертить пока не понятно.
Изначально хотел сделать рекурсивный вызов процедуры в которой идет инсерт и потом вызывается она же только с вновь добавлеными записями.
...
Рейтинг: 0 / 0
20.10.2008, 14:18
    #35604309
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
insert into temp(id, parent_id)
with a(id, parent_id) as (
select id, parent_id 
from temp 
where id= 90  and parent_id= 85 
  union all
select t.id, t.parent_id
from temp t, a
where a.id=t.parent_id 
)
, b(id, new_id) as (
select id, nextval for temp_seq 
from a
)
select id.new_id, coalesce(pid.new_id,  170 )
from a
join b id on a.id=id.id
left join b pid on a.parent_id=pid.id
На вход запросу подавать 3 параметра: id, parent_id и new_parent_id (в примере - 170).
Предполагается что в таблице нет циклов.
...
Рейтинг: 0 / 0
20.10.2008, 16:34
    #35604777
Mb1WA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема...
Спасибо, это то что надо.
...
Рейтинг: 0 / 0
20.10.2008, 17:04
    #35604865
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема...
Mark Barinstein[src]insert into temp(id, parent_id)
with a(id, parent_id) as (
select id, parent_id
...

Проникся
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема... / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]