Рекурсивный запрос

1. newbas 533 31.08.18 12:18 Сейчас в теме
Приветствую.
Есть ли возможность выбрать одним запросом данные рекурсивно:
Есть РегистрСведений.ТехнологическиеКарты, структура:
Измерения:
Номенклатура, Характеристика, Комплектующая, ХарактеристикаКомплектующей
Ресурсы:
КоличествоКомплектующей
Все дело в том, что Комплектующая так же может быть описана другой технологической картой.
Возможно ли это выбрать одним запросом?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 31.08.18 12:25 Сейчас в теме
нет, рекурсия в запросах не возможна,

просто делаете максимальное количество соединений и/или объединений (в зависимости от уровня вложенности)
3. soft_wind 31.08.18 12:27 Сейчас в теме
в общем, Да - все это можно построить в одном запросе
4. @Fancy 31.08.18 13:01 Сейчас в теме
5. soft_wind 31.08.18 13:54 Сейчас в теме
ну и к чему все свелось?

Пока МаксимальнаяДлинаЗамыканий < МаксимальнаяДлинаПути Цикл
Запрос.Текст = Запрос.Текст + СтрЗаменить(СтрЗаменить(Рефрен, "#1", Формат(МаксимальнаяДлинаЗамыканий, "ЧГ=0")), "#2", Формат(2 * МаксимальнаяДлинаЗамыканий, "ЧГ=0"));
МаксимальнаяДлинаЗамыканий = 2 * МаксимальнаяДлинаЗамыканий
КонецЦикла;

в цикле производится какое-то максимальное разворачивание по группам тоже самое что иногда встречается в запроса

Выбрать
спр.Родитель,
спр.Родитель.Родитель,
спр.Родитель.Родитель.Родитель,
спр.Родитель.Родитель.Родитель.Родитель,

и т.д. у кого какая вложенность
но это все именно ручками, или как в вашем примере в какойто процедуре при заданном количестве вложенности
6. herfis 500 31.08.18 14:01 Сейчас в теме
(5) Не "какое-то максимальное разворачивание", как вы написали, а очень эффективное.
В цикле строится запрос и да - необходимо ограничить максимальную длину пути.
Но в отличие от альтернативных вариантов, количество этапов выполнения запроса получается на порядки меньше (там нелинейная зависимость относительно уровня вложенности). И можно не бояться ставить заведомо большую максимальную длину пути.
Т.е. на практических задачах - практически универсальное решение таки одним запросом.
ЗЫ. 30 уровней вложенности покрываются одним пакетным запросом из 6 запросов. Десять запросов в пакете покроют 500 уровней вложенности.
7. kasper076 105 12.09.18 11:46 Сейчас в теме
«Транзитивное замыкание запросом» [http://infostart.ru/public/158512/]
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот