1С++ Запрос по иерархическому спрвочнику #520151


#0 by VanoZZZ
Есть у кого-нибудь пример запроса по справочнику, чтобы вывести иерархически? Интересует не через индексированную таблицу, через левое соединение с "родителем"
#1 by Mikeware
Ну и делай столько соединений, сколько максимальный уровень...
#2 by VanoZZZ
с соединениями понятно, а как указать поле в котором будет родитель?
#3 by Mikeware
в смысле?
#4 by ДенисЧ
PArentID ?
#5 by Mikeware
у тебя будет _до_ n-1 родителей...
#6 by VanoZZZ
мне ведь как то группировать получается нужно по родителю, должно быть какое то поле с родителем
#7 by AeDen
я-бы функцию для начала определил пользовательскую...
#8 by AeDen
АпарентИД чем не кошерно?
#9 by orefkov
Вот для четырехуровнего справочника: coalesce(Р3.id, Р2.id, Р1.id) [РодительПервогоУровня], case when Р3.id is not null then Р2.id else coalsce(Р2.id, Р1.id) end [РодительВторогоУровня], case when Р3.id is not null then Р3.id else null end [РодительТретьегоУровня] from Справочник.Товары Т left join Справочник.Товары Р1 on Т.parentid = Р1.id left join Справочник.Товары Р2 on Р1.parentid = Р2.id left join Справочник.Товары Р3 on Р2.parentid = Р3.id
#10 by orefkov
+ Хотя нет, ща еще подумаю...
#11 by Skom
а еще у садовникова есть хорошее решение на эту тему
#12 by VanoZZZ
где посмотреть?
#13 by orefkov
Вот так: select coalesce(Р3.id, Р2.id, Р1.id) [РодительПервогоУровня], case when Р3.id is not null then Р2.id else case when Р2.id is not null then Р1.id else null end end [РодительВторогоУровня], case when Р3.id is not null then Р3.id else null end [РодительТретьегоУровня] from Справочник.Товары Т left join Справочник.Товары Р1 on Т.parentid = Р1.id left join Справочник.Товары Р2 on Р1.parentid = Р2.id left join Справочник.Товары Р3 on Р2.parentid = Р3.id Я в 1sqlite даже функцию специальную для этого добавил - coalesceex, которая может возвращать не только первое не-null значение, а с заданным номером.
#14 by VanoZZZ
там можно без кейса. Но я точно помню, что не надо всех Р1, Р2... перечислять. Было просто какое то условие в одну строку
#15 by Skom
идея в том, что создается таблица дополнительная в SQL и там все "родство" перечисляется
#16 by Андрей_Андреич
Это триггеры вешать на все иерархические справочники надо?
#17 by Skom
да
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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