Oracle, рекурсивные запросы(или как ето делается)

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

mod
Сообщения: 5
Зарегистрирован: 26 май 2005, 17:46
Откуда: Moscow

2Oscar

select id, director from (
select id, director from directora
where id<>director
) a
start with id=9
connect by prior director=id;

-- ЗЫ + случай ссылки друг на друга д.б. исключен...
mod
Сообщения: 5
Зарегистрирован: 26 май 2005, 17:46
Откуда: Moscow

Но в используемой версии (не знаю, какая), Оракле не знает этого оператора
Возможно все, но все проходит...
mod
Сообщения: 5
Зарегистрирован: 26 май 2005, 17:46
Откуда: Moscow

2Oscar

-- Ora ver.:
select * from v$version
Возможно все, но все проходит...
bloknot
Сообщения: 1
Зарегистрирован: 01 авг 2009, 22:46

Делается это вот так, но если быть точнее поставленному условию, то нужно убрать LEVEL и ID из запрашиваемых полей. :rolleyes:
  1. Select
  2. LEVEL-1 "нач-ов.мжд челом и текущим нач",
  3. a.id "Сам Чел",
  4. a.direktor "Директор Чела"
  5. From
  6. --заменяем id начальника на -1 если id сам себе начальник
  7. (select id,DECODE(direktor,id,-1,direktor) direktor from direktora) a
  8. --указываем направление
  9. Connect By Prior a.direktor=a.id
  10. --задаем условие с какой строки(строк) начинать строить дерево
  11. Start With a.id=9;
Ответить