powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на отбор документов из иерархического списка.
6 сообщений из 6, страница 1 из 1
Запрос на отбор документов из иерархического списка.
    #34746670
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня возникла проблема. Есть типичный список подчиненности. Таблица из двух полей Родитель-Ребенок (счетчик не всчет). У меня это документация. Задача - отобрать все документы, которые входят в произвольный узел. Сложности в том, что некоторые документы могут быть приложениями для других документов, причем на разных уровнях вложенности. Т.е. если просто сделать отбор всех упоминаний документов, то один и тот же документ может упоминаться несколько раз. А мне нужен список где документы упоминались бы только один раз. Раньше я пользовался вложенными Select-ами. Но тогда уровень вложенности был ограничен. А сейчас изменилась структура базы и уровень вложенности перестал быть ограничен. Конечно не 100, но с 3-х до 10-15 может возрасти запросто. Прошу совета. Можно ли сделать отбор одним запросом?
...
Рейтинг: 0 / 0
Запрос на отбор документов из иерархического списка.
    #34746727
Фотография Быкис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем так плохо? Правда, в таблице само собой, ещё есть поля iRealID (-1, если это и есть сам элемент и некий "настоящий" ID если это всего лишь ссылка на существующий элемент - какраз для того чтобы избежать повторов, если у когото больше одного родителя). Но функции принцип такой.
...
Рейтинг: 0 / 0
Запрос на отбор документов из иерархического списка.
    #34748833
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, что сказать?... Мне не надо ни создавать, ни удалять ни базы, ни таблицы. Да и честно, сижу на солнечной стороне, кондишена нет, мозги плавятся, в тени +32, весь мокрый как мышь. Ни как не врублюсь. И в голову ничего подходящего не лезет. Может подробнее расписать? Есть таблица еидЫмофяю В ней два столбца: Parent и Childer. надо сформулировать запрос так, чтобы задав одно значение для Parent, получить всех Childer, входящих в него. Вложенность может быть любой (или хотя бы для фиксированной). И каждый Childer должен быть упомянут однократно.
...
Рейтинг: 0 / 0
Запрос на отбор документов из иерархического списка.
    #34748923
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jossнадо сформулировать запрос так, чтобы задав одно значение для Parent, получить всех Childer, входящих в негоИначе говоря, зная код некоторого узла, вам нужно найти все множество его потомков? Т.е. не полько прямых детей, но и внуков, правнуков и т.д., так?

Тогда вы должны понимать, что в иерархической субд для того чтобы вытащить такую генеалогию запросом, вам придется в этом запросе резервировать всю цепочку join'ов на максимальную возможную глубину - которая при этом, понятное дело, должна быть конечна и заявлена в качестве предела возможностей вашего приложения.

Если такое ограничение является для вас неприемлимым, тогда можно писать рекурсивную функцию на VB по сбору кодов всех потомков исходного предка (в массив, коллекцию, временную таблицу - в зависимости от дальнейших шагов).
...
Рейтинг: 0 / 0
Запрос на отбор документов из иерархического списка.
    #34748989
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, когда-то я и делал вложенные select на всю глубину, но сейчас хотел от этого избавиться. Но уж очень не хотелось создавать временные таблицы. Но если без этого не возможно, то наверное придется пойти этим путем. Создать временную таблицу, занести туда всё, что входит, начиная с верхнего узла и до пра-пра-пра..., а потом уже из этой таблицы сделать нужную выборку. Только не забыть её потом удалить.
...
Рейтинг: 0 / 0
Запрос на отбор документов из иерархического списка.
    #34748995
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossДа, когда-то я и делал вложенные select на всю глубину, но сейчас хотел от этого избавиться. Но уж очень не хотелось создавать временные таблицы. Но если без этого не возможно, то наверное придется пойти этим путем. Создать временную таблицу, занести туда всё, что входит, начиная с верхнего узла и до пра-пра-пра..., а потом уже из этой таблицы сделать нужную выборку. Только не забыть её потом удалить.

можно не удалять а перезаписывать в нее данные "поверх"
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на отбор документов из иерархического списка.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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