|
|
|
иерархия в таблице
|
|||
|---|---|---|---|
|
#18+
У меня такой вопрос: можно ли одним запросом получить все записи из одной таблицы, если между ними есть иерархия. К примеру таблица работников фирмы, одно из полей которой - начальник. Т.е мы знаем кто, начальник каждого работника. И все начальники записаны в той же таблице. на ОRACLE я знаю это делается так: SELECT ename FROM emp CONNECT BY manager = PRIOR empno Start WITH meneger IS NULL; А в Аксесе такое не проходит. Может кто-нибудь знает как это делается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 14:42 |
|
||
|
иерархия в таблице
|
|||
|---|---|---|---|
|
#18+
Чего-то не очень понятно: начальники и подчиненные в одной таблице, нужно получить записи из одной таблицы. Так они и так в одной таблице. Я так понимаю нужен определенный порядок? Тогда какой? Все Начальники, потом все подчиненные? Или Начальник, все его подчиненные, след. начальник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 14:52 |
|
||
|
иерархия в таблице
|
|||
|---|---|---|---|
|
#18+
Получается так: есть определенная цепочка - работник, его начальник, начальник его начальника и т.д. Нужно, зная работника, определить всю эту цепочку от работника и до самого главного начальника. Т.е. запрос будет немного отличаться от того, что я привела раньше, но принцып все-равно будет тот же, я думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 14:58 |
|
||
|
иерархия в таблице
|
|||
|---|---|---|---|
|
#18+
См. хорошую статью про моделирование иерархических взаимосвязей: http://citforum.ru/database/articles/tree.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 14:59 |
|
||
|
иерархия в таблице
|
|||
|---|---|---|---|
|
#18+
2 dannis Статью я прочитала. Но она не дает никаких решений, кроме построения таблицы, а у меня уже все построено. О возможности делать нужный мне запрос говорится, что это возможно, но КАК? Этого-то там и не сказано... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 15:08 |
|
||
|
иерархия в таблице
|
|||
|---|---|---|---|
|
#18+
>но КАК? Этого-то там и не сказано... Как же не сказано - сказано Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Правда триггеров в акесе нетути, прийдется собственными силами. Еще один вариант (Хорош при отсуствии трггеров, т.е. для mdb) Сделать функцию на VBA. И через рекурсию найти всех и вся. Но это и более медленный способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 15:31 |
|
||
|
иерархия в таблице
|
|||
|---|---|---|---|
|
#18+
Так я же спрашиваю в какой последовательности нужно получить результат запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 15:33 |
|
||
|
иерархия в таблице
|
|||
|---|---|---|---|
|
#18+
"Еще один вариант (Хорош при отсуствии трггеров, т.е. для mdb) Сделать функцию на VBA. И через рекурсию найти всех и вся. Но это и более медленный способ." У меня как раз такой случай. (mdb). Сначала у меня действительно была такая рекурсивная функция. Тем более что я как раз этот запрос использую в скрипте, а не сам по себе. Проблема была в том, что рекурсия искала от нижнего элемента к корню, а мне надо наоборот - от корня вниз. Поскольку я такую рекурсию сделать не смогла, то стала искать решение без рекурсии. В ORACLE это можно сделать, как я писала уже. Но на Аксесе у меня это не работает. Он кричит что есть ошибка. Видимо ему команда CONNECT BY не знакома. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 15:42 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32172983&tid=1681308]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 310ms |

| 0 / 0 |
