![]() |
|
Модераторы: Akina |
![]()
|
|
| nicholaeff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.11.2006 Репутация: нет Всего: нет |
Добрый День, Господа(те кто еще не в Париже)!
Подскажите, есть ли в MS Access некая конструкция или метод работы с иерархической таблицей. Есть - поля : папа,сын...и нужно грубо говоря, начиная с указаного папы, получить всех его потомков по такой вот иерархии...в оракле то мне знакомы способы, а вот тут сел в лужу... Спасибо! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
А теперь, пожалуйста, нормальным техническим языком опишите, что конкретно у Вас не получается.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| nicholaeff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.11.2006 Репутация: нет Всего: нет |
Таблица t1, в которой два поля son father!
Поле son содержит численное значение, говорящее о том, что родителем текущей записи является запись этой же таблицы, у которой в поле father такое же значение(такая родительская запись единственна по построению) . по такому принципу построено n-арное дерево, где n - непостоянно! Задается значение поля father (не корень дерева, а может и корень) и требуется вывести все дочерние записи, начиная от заданой и до конца иерархии. я плохо знаю MS Access, если есть в этой СУБД функции, то наверняка можно решить задачу некой рекурсией, а возможно есть и спец конструкция как в оракл! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Специальной конструкции нет. Можно построить рекурсивный запрос - но все абсолютно источники настоятельно от этого отговаривают.
Полагаю наиболее разумным написАние собственной функции в модуле БД. Которая может как выдать готовый рекордсет по заданным условиям, так и, например, просто определить, связаны ли 2 записи прямо-родственной зависимостью, после чего использовать ее в качестве критерия отбора в запросе... причем первый вариант - выдача рекордсета - имхо как менее накладное, так и более по почти всем параметрам гибкое и удобное решение. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Rodman |
|
|||
|
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
а если использовать LEFT JOIN...
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Так можно вытащить только непосредственных детей. Но 2 и бОльшие уровни не вынутся. Либо рекурсивный запрос (до Count = 0) - но об этом я говорил выше. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Если нужно вывести само дерево, то можно (и нужно) исопльзовать ActiveX TreeView от MS.
см. пример. Присоединённый файл ( Кол-во скачиваний: 5 )
tree.zip 81,98 Kb |
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |