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

Откуда:
Сообщений: 32
Есть табличка, которая устанавливает отношение многие ко многим. Надо найти пары связей, которые имеют какое-то опосредованное отношение к интересующему меня id.
Тут иерархии в виде дерева нет.

Думал сделать примено так:
with test as(
select 2 id, 1 pid from dual union all
select 2 id, 3 pid from dual union all
select 2 id, 4 pid from dual union all
select 5 id, 4 pid from dual union all
select 6 id, 7 pid from dual union all
select 7 id, 8 pid from dual
)
select test.*, prior pid from test
start with pid=1 connect by NOCYCLE (prior id=pid or prior pid=id) 
но этот запрос работает не правильно.

В результате должно получиться:
2, 1
2, 3
2, 4
5, 4
13 май 11, 14:43    [10648033]     Ответить | Цитировать Сообщить модератору
 Re: Нейро связи  [new]
AmKad
Member

Откуда:
Сообщений: 5222
yahan,

Получить множество из связанных пар
13 май 11, 14:48    [10648084]     Ответить | Цитировать Сообщить модератору
 Re: Нейро связи  [new]
Elic
Member

Откуда:
Сообщений: 29984
select distinct * from test
  start with pid = 1 
  connect by nocycle prior id in (id, pid) or prior pid in (id, pid);
13 май 11, 14:56    [10648177]     Ответить | Цитировать Сообщить модератору
 Re: Нейро связи  [new]
yahan
Member

Откуда:
Сообщений: 32
Elic, на некоторых id работает нормально, а на некоторых id подвисает :(, при этом результат выботки д.б. порядка 10 записей.
13 май 11, 17:11    [10649567]     Ответить | Цитировать Сообщить модератору
 Re: Нейро связи  [new]
Elic
Member

Откуда:
Сообщений: 29984
yahan
а на некоторых id подвисает :(
Говорят, и кур доят
13 май 11, 17:16    [10649603]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить