Как составить такой запрос

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Zhur
Сообщения: 125
Зарегистрирован: 01 мар 2006, 18:17

Как составить такой запрос

Сообщение Zhur » 28 апр 2006, 12:59

Добрый день.
Вот... мозгов не хватает домыслить такую ситуацию:
Имеется таблица HIERARCHI(ID INTEGER,NAME VARCHAR(100), HIGH_ID INTEGER)
и таблица PERSON (ID INTEGER, HIERARCHI INTEGER).
В таблице PERSON имеется FK на HIERARCHI.ID.
В таблице HIERARCHI также имеется FK на HIERARCHI.ID (эта же таблица). Таким образом в HIERARCHI достигается иерархия записей до бесконечной вложенности.
Нужно выбрать все записи из PERSON таким образом, что бы PERSON.ID, что бы либо IERARCHI.ID=:VALUE, либо IERARCHI.HIGH_ID=:VALUE и так далее.
Например
SELECT * FROM PERSON P INNER JOIN HIERARCHI H ON P.HIERARCHI=H.ID WHERE (H.ID=:VALUE OR H.HIGH_ID=:VALUE OR ???)
... то есть ??? - это то что я и не знаю как надо сделать... что бы пробежаться с проверкой по всей иерархии.
Фу-у-у... даже пока писАл это мог запутаться.
Вот такая, блин, загвоздка.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 28 апр 2006, 13:08

процедурой. см. на сайте статьи по древовидным структурам.

Zhur
Сообщения: 125
Зарегистрирован: 01 мар 2006, 18:17

Сообщение Zhur » 28 апр 2006, 13:11

kdv писал(а):процедурой. см. на сайте статьи по древовидным структурам.
Спасибо... щас загляну

Zhur
Сообщения: 125
Зарегистрирован: 01 мар 2006, 18:17

Сообщение Zhur » 28 апр 2006, 13:35

Zhur писал(а):
kdv писал(а):процедурой. см. на сайте статьи по древовидным структурам.
Спасибо... щас загляну
Отличные статьи... Спасибо еще раз.

Zhur
Сообщения: 125
Зарегистрирован: 01 мар 2006, 18:17

Сообщение Zhur » 28 апр 2006, 14:18

Zhur писал(а):
Zhur писал(а):
kdv писал(а):процедурой. см. на сайте статьи по древовидным структурам.
Спасибо... щас загляну
Отличные статьи... Спасибо еще раз.
Да... в точку... то, что надо.

Ответить