powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Реализация доступа к дереву при помощи SQL.
4 сообщений из 4, страница 1 из 1
Реализация доступа к дереву при помощи SQL.
    #35164338
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла такая задачка.
Есть в БД класс, содержащий relationship на себя самого для описания дерева.
Например, такой:

Class My.Tree Extends (%Persistent)
{
Property Name As %String;
Relationship Children As My.Tree [ Cardinality = many, Inverse = Parent ];
Relationship Parent As My.Tree [ Cardinality = one, Inverse = Children ];
}

При доступе через SQL он выглядит как таблица с тремя полями: ID, Name, Parent.

Как получить всех потомков выбранного объекта (выбранной записи в таблице) при доступе через SQL одним запросом?

В DB2 можно нарисовать рекурсивный запрос. Но Cache' не поддерживает WITH.

Виктор
...
Рейтинг: 0 / 0
Реализация доступа к дереву при помощи SQL.
    #35164501
Правильно я понимаю, что нужны все потомки, независимо от их уровня вложенности?

Такой функционал можно получить, оформив алгоритм в виде хранимой процедуры (запрос - член класса, написанный на COS). Заодно работать будет шустро.

Если версия Cache 2007.1, и сильно не хочется писать custom query, основанный на COS, то можно добавить в таблицу вычислимое поле Path, которое в конкатерированной форме хранит "путь" к записи (ID родителей с разделителями), и сделать по этому вычислимому полю индекс (для этого и нужна 2007.1), чтобы при каждом обращении эти поля не пересчитывались. Тогда поиск всех возможных детей вне зависимости от уровня вложенности будет сводится к условию вхождения в значение нашего вычислимого поля идентификатора родителя (включая 1 символ разделителя, чтобы ошибок вложенности, когда один ID может целиком (посимвольно) входить в другой ID, избежать).


---------
http://writeimagejournal.com - InterSystems Russia Technology Blog.
...
Рейтинг: 0 / 0
Реализация доступа к дереву при помощи SQL.
    #35164531
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. без изменения класса никак?
Собственно вопрос и был в том, чтобы БД не править.
...
Рейтинг: 0 / 0
Реализация доступа к дереву при помощи SQL.
    #35182044
А в чем сложность? Тут же аддитивное изменение - конфликтов быть не должно.
---------
http://writeimagejournal.com - InterSystems Russia Technology Blog.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Реализация доступа к дереву при помощи SQL.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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