powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Деревянные списки
6 сообщений из 6, страница 1 из 1
Деревянные списки
    #32028273
Вячеслав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Возможно проблема была ранее обсуждена на форуме, - тогда
спасибо за ссылку, но в любом случае не могу решить следущую задачу:
Имеем таблицу, описывающюю дерево подразделений предприятия :
ID, PARENT_ID, LEV - собственно id, ссылка на родитель-подразделение на уровень выше,
уровень вложенности подразделения в дереве. Необходимо по заданному id выдать набор этих самых id всех входящих в заданное подразделение подразделений.

Поля: ID,PARENT_ID,LEV
1 NULL 1 - Предприятие
2 1 2 - Цех 1
3 1 2 - Цех 2
4 2 3 - Отдел Цеха 1
5 3 3 - Отдел Цеха 2
6 5 4 - Подотдел Отдела Цеха 2

т.о. задав id = 1 должны получить список id 1,2,3,4,5,6
задав id = 3 -> 3,5,6

Заранее благодарен.
...
Рейтинг: 0 / 0
Деревянные списки
    #32028279
Shmak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так бери алгоритм обхода дерева, делай стек - временную таблицу (куда будут писаться найденные узлы), и вперед.. я не знаю, но возможно в какой-нибудь книжке типа Вирт "алгоритмы и структуры данных" есть готовый пример на паскале.
...
Рейтинг: 0 / 0
Деревянные списки
    #32028297
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select id from таблица
start with id=подразделение
connect by prior id=parent_id

или я что не так понял?
...
Рейтинг: 0 / 0
Деревянные списки
    #32028311
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А LEV зачем в таблице хранить? Его посчитать можно. В запросах с connect by существует псевдоколонка LEVEL.
...
Рейтинг: 0 / 0
Деревянные списки
    #32028335
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боюсь, что мой метод ему не подойдет. Этот вопрос, судя по всему, пришел из конференции по MS SQL. Вячеслав просто решил сравнить наши методы и их.
...
Рейтинг: 0 / 0
Деревянные списки
    #32028896
Ответ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ничего я не хотел сравнивать, просто система с которой
работаю на двух платформах существует, так что проблему нужно решить и
в MS и в оракле,
но, в любом случае, всем спасибо

SELECT * FROM my_table WHERE
ID IN (SELECT DD.ID FROM my_table DD START WITH DD.ID = 1
CONNECT BY PRIOR DD.ID = DD.PARENT_ID)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Деревянные списки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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