powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / иерархия в таблице
8 сообщений из 8, страница 1 из 1
иерархия в таблице
    #32172922
ruslana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня такой вопрос: можно ли одним запросом получить все записи из одной таблицы, если между ними есть иерархия. К примеру таблица работников фирмы, одно из полей которой - начальник. Т.е мы знаем кто, начальник каждого работника. И все начальники записаны в той же таблице.
на ОRACLE я знаю это делается так:

SELECT ename FROM emp
CONNECT BY manager = PRIOR empno
Start WITH meneger IS NULL;

А в Аксесе такое не проходит. Может кто-нибудь знает как это делается?
...
Рейтинг: 0 / 0
иерархия в таблице
    #32172937
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то не очень понятно: начальники и подчиненные в одной таблице, нужно получить записи из одной таблицы.
Так они и так в одной таблице.
Я так понимаю нужен определенный порядок?
Тогда какой?
Все Начальники, потом все подчиненные?
Или Начальник, все его подчиненные, след. начальник?
...
Рейтинг: 0 / 0
иерархия в таблице
    #32172948
ruslana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается так: есть определенная цепочка - работник, его начальник, начальник его начальника и т.д. Нужно, зная работника, определить всю эту цепочку от работника и до самого главного начальника. Т.е. запрос будет немного отличаться от того, что я привела раньше, но принцып все-равно будет тот же, я думаю.
...
Рейтинг: 0 / 0
иерархия в таблице
    #32172951
Фотография dannis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. хорошую статью про моделирование иерархических взаимосвязей:
http://citforum.ru/database/articles/tree.shtml
...
Рейтинг: 0 / 0
иерархия в таблице
    #32172955
ruslana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 dannis
Статью я прочитала. Но она не дает никаких решений, кроме построения таблицы, а у меня уже все построено. О возможности делать нужный мне запрос говорится, что это возможно, но КАК? Этого-то там и не сказано...
...
Рейтинг: 0 / 0
иерархия в таблице
    #32172977
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>но КАК? Этого-то там и не сказано...

Как же не сказано - сказано
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Вспомогательная таблица
Более эффективный и удобный способ состоит в том, чтобы, в дополнение к 
первоначальной таблице, создать вспомогательную таблицу, содержащую 
всего два поля. В одном из них следует хранить Id элемента, а в другом - Id 
всех его предков. 
...
Модификация вспомогательной таблицы, при изменении основной, 
производится довольно просто. Заботу о ней можно предоставить либо 
триггерам, либо приложению. 

Правда триггеров в акесе нетути, прийдется собственными силами.

Еще один вариант (Хорош при отсуствии трггеров, т.е. для mdb)
Сделать функцию на VBA.
И через рекурсию найти всех и вся. Но это и более медленный способ.
...
Рейтинг: 0 / 0
иерархия в таблице
    #32172983
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я же спрашиваю в какой последовательности нужно получить результат запроса?
...
Рейтинг: 0 / 0
иерархия в таблице
    #32172991
ruslana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Еще один вариант (Хорош при отсуствии трггеров, т.е. для mdb)
Сделать функцию на VBA.
И через рекурсию найти всех и вся. Но это и более медленный способ."

У меня как раз такой случай. (mdb).
Сначала у меня действительно была такая рекурсивная функция. Тем более что я как раз этот запрос использую в скрипте, а не сам по себе. Проблема была в том, что рекурсия искала от нижнего элемента к корню, а мне надо наоборот - от корня вниз. Поскольку я такую рекурсию сделать не смогла, то стала искать решение без рекурсии. В ORACLE это можно сделать, как я писала уже. Но на Аксесе у меня это не работает. Он кричит что есть ошибка. Видимо ему команда CONNECT BY не знакома.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / иерархия в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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