Кстати, ГИВЦу недавно исполнилось 40 лет.
Блог посвящен технологической платформе Гедымин (Gedemin), предназначенной для быстрой разработки экономических приложений. Платформа создана компанией Golden Software of Belarus, Ltd и имеет открытый исходный код.
Кстати, ГИВЦу недавно исполнилось 40 лет.
WITH RECURSIVE group_tree AS ( SELECT CAST('' AS VARCHAR(120)) as path, -1 as id, -1 as parent, CAST('' AS dname) as name FROM rdb$database UNION ALL SELECT IIF(gt.path > '', gt.path || '.', '') || g2.id, g2.id, g2.parent, g2.name FROM gd_goodgroup g2 JOIN group_tree gt ON COALESCE(g2.parent, -1) = gt.id ) SELECT * FROM group_tree WHERE path > ''Запрос может быть легко изменен для любого древовидного справочника из базы данных Гедымина.
Если из получаемого пути следует исключить наименование корневой группы, то строку:
IIF(gt.path > '', gt.path || '.', '') || g2.id,Следует заменить на:
IIF(gt.path > '', gt.path || '.', '') || IIF(g2.parent IS NULL, '', g2.id),Для того, чтобы запрос возвращал только пути элементов для поддерева заданного его корневым узлом, следует заменить первый SELECT в объединении на:
SELECT CAST(name AS VARCHAR(120)) as path, id, parent, name FROM gd_goodgroup WHERE id = идентификатор_корня_поддерева