Запрос. Как из списка групп получить элементы и из какой именно группы элемент? #478379


#0 by Александр Б
Имеется массив групп Номенклатуры. Мне нужно получить список всех элементов и групп из этих групп, при этом во второй колонке для каждого элемента должна быть группа, в иерархии которого находится данный элемент. Надеюсь понятный вопрос :)
#1 by ShoGUN
Задам вопросы на примере: Есть такая иерархия: Группа1 Группа2  Элемент Т.е. в группу вложена другая группа, а в нее в свою очередь - элемент. Если в массиве передается Группа1 - элемент должен попадать в результат? И если должен - во втором столбце должна быть Группа1 или Группа2? Из постановки задачи это непонятно.
#2 by Александр Б
в результат должна попадать Группа1, т.к. именно она передается в Массиве.
#3 by Александр Б
То есть при таком примере выборка должна быть следующая:
#4 by Александр Б
А если например у нас данные: Группа1 Элемент1 Элемент2 Группа2 Элемент3 Элемент4 То при передаче в Массиве (Группа1,Группа2) выборка должна быть следующая: Группа1   Группа1 Уже часа эту головоломку не могу решить. И есть ли решение?
#5 by Александр Б
Также список групп хранится в отдельной таблице, путем выбора из которой мы и получаем данный массив. Может быть как-то можно использовать соединение?
#6 by ShoGUN
А если передается и Группа1, и Группа2? :) В принципе, я решение вижу, но непонятно - устроит ли оно тебя.
#7 by Александр Б
см :)
#8 by Александр Б
а, понял вопрос. Элемент   Группа2 А уж дальше я ее отберу как мне надо :)
#9 by ShoGUN
Не ты не понял. Я про вложенность: Группа1 Группа2  Элемент Передаем группу 1 и группу 2 в списке, получаем: Группа1  Группа1 Группа2  Группа1 Так?
#10 by Александр Б
да
#11 by ShoGUN
Ага, так. Тогда просто делай INNER JOIN таблицы справочника с самой собой по условию В ИЕРАРХИИ. Правда, боюсь, такой запрос будет сильно тормозить :/
#12 by IronDemon
Зачем соединение? Выбор Когда Ссылка.ЭтоГруппа Тогда Ссылка Иначе Ссылка.Родитель Конец Как Поле2
#13 by Александр Б
не пойдет, т.к. это дает только текущего родителя.
#14 by IronDemon
Получится как в 4 но не как в 8
#15 by Александр Б
В ИЕРАРХИИ при соединении не работает :( выдается ошибка синтаксическая
#16 by ShoGUN
Соединение не получится, только что сам попробовал... Вот именно, что не получится...
#17 by Александр Б
Вот вроде задача на первый взгляд не сложная, а на самом деле хорошая головоломка :)
#18 by IronDemon
Количество уровней ограничено? Тогда можно связи по Ссылка.Родитель, Ссылка.Родитель.Родитель и т.д. p.s. У меня такие запросы есть ;)
#19 by Александр Б
Делается на базе УТ, а в ней для справочника Номенклатура количество уровней неограничено :)
#20 by ShoGUN
Да, похоже по-другому никак. В принципе это то же самое, что В ИЕРАРХИИ.
#21 by IronDemon
а) Ограничь б) Дойти до 10 родителя, дальше, я думаю, смысла нет :)
#22 by Александр Б
согласен, это решит задачу, вот только как-то не оптимально. Других вариантов вообще нет? Напомню, что у нас список этих групп хранится в отдельной таблице, путем выборки из которой мы и получаем наш массив. Может как-то в соединении похимичить?
#23 by ShoGUN
Есть другое неоптимальное - генерация текста запроса в цикле - UNION по количеству групп в массиве :) Только даже не знаю, чем это лучше...
#24 by Jaap Vduul
Тут или количество уровней должно быть ограничено или запрос в цикле гонять.
#25 by Александр Б
кстати да, как вариант :) но если у нас будет 100 групп в этой таблице, то крайне неоптимальное решение станет. В общем красиво это наверно не реализовать, буду думать другие варианты. Всем спасибо!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

Похожие вопросы 1С

В этой группе 1С