|
Как в запросе при соед-нии "один ко многим" поместить результаты в колонки, а не в строки? | ☑ | ||
---|---|---|---|---|
0
Механик
23.07.20
✎
10:00
|
Возьмём типовой справочник "Номенклатура" из УНФ, в нём есть ТЧ "Дополнительные реквизиты". Видов реквизитов для номенклатуры - 10 штук. Если сделать такой запрос:
"ВЫБРАТЬ | Товары.Ссылка КАК Ссылка, | НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство, | НоменклатураДополнительныеРеквизиты.Значение КАК Значение |ИЗ | Справочник.Номенклатура КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты | ПО НоменклатураДополнительныеРеквизиты.Ссылка = Товары.Ссылка |ГДЕ | Товары.ЭтоГруппа = ЛОЖЬ"; В выборке будет таблица с несколькими строками, где будет заполнено дополнительными значениями, а также NULL`ами, если значение доп. реквизита у конкретной номенклатуры отсутствует. И одна и та же номенклатуры будет выведена несколько раз. А как лучше и проще сделать, чтобы в выборке номенклатура выводилась единожды, а для каждого значения доп. реквизита выводилась отдельная колонка в этой же строке? Отдельную колонку с заранее известным именем доп. реквизита вывожу так: "ВЫБРАТЬ | Товары.Ссылка КАК Ссылка, | ЕСТЬNULL(ВЫБОР | КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &АртикулПоставщика | ТОГДА ЕСТЬNULL(НоменклатураДополнительныеРеквизиты.Значение, """") | КОНЕЦ, """") КАК АртикулПоставщика |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары | ПО НоменклатураДополнительныеРеквизиты.Ссылка = Товары.Ссылка |ГДЕ | Товары.ЭтоГруппа = ЛОЖЬ"; Но как сделать, чтобы все доп. реквизиты в одну строку с владельцем-товаром "свернулись"? |
|||
1
Механик
23.07.20
✎
10:03
|
(0) То есть чтобы в итоге в выборке было:
Товар1|ЗначениеДопРеквизита1|ЗначениеДопРеквизита2|ЗначениеДопРеквизита3||ЗначениеДопРеквизита4 Товар2|ЗначениеДопРеквизита1|ЗначениеДопРеквизита2|ЗначениеДопРеквизита3||ЗначениеДопРеквизита4 |
|||
2
Aleksey
23.07.20
✎
10:05
|
типизировать колонки. Т.е. в каждую колонку получать конкретное свойство
|
|||
3
hhhh
23.07.20
✎
10:08
|
(1) |ИЗ
| Справочник.Номенклатура КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты1 | ПО НоменклатураДополнительныеРеквизиты1.Ссылка = Товары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты2 | ПО НоменклатураДополнительныеРеквизиты2.Ссылка = Товары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты3 | ПО НоменклатураДополнительныеРеквизиты3.Ссылка = Товары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты4 | ПО НоменклатураДополнительныеРеквизиты4.Ссылка = Товары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты5 | ПО НоменклатураДополнительныеРеквизиты5.Ссылка = Товары.Ссылка |
|||
4
Aleksey
23.07.20
✎
10:30
|
(3) Почти только в каждом левом соединение указать свойство
Допустим вам нужно вывести из доп реквизитов только вес, как бы вы в запросе сделали? А теперь вес и масса А теперь вес, масса и .... |
|||
5
D_E_S_131
23.07.20
✎
13:56
|
|ИЗ
| Справочник.Номенклатура КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты1 | ПО НоменклатураДополнительныеРеквизиты1.Ссылка = Товары.Ссылка И НоменклатураДополнительныеРеквизиты1.Свойство = &СвойствоВес | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты2 | ПО НоменклатураДополнительныеРеквизиты2.Ссылка = Товары.Ссылка И НоменклатураДополнительныеРеквизиты2.Свойство = &СвойствоМасса |
|||
6
Garykom
гуру
23.07.20
✎
14:00
|
Можно через Когда
|
|||
7
Garykom
гуру
23.07.20
✎
14:01
|
||||
8
bootini
24.07.20
✎
09:10
|
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка, | МАКСИМУМ(ВЫБОР | КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &АртикулПоставщика | ТОГДА ЕСТЬNULL(НоменклатураДополнительныеРеквизиты.Значение, """") | КОНЕЦ, """") КАК АртикулПоставщика, | МАКСИМУМ(ВЫБОР | КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &АртикулКлиента | ТОГДА ЕСТЬNULL(НоменклатураДополнительныеРеквизиты.Значение, """") | КОНЕЦ, """") КАК АртикулКлиента |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары | ПО НоменклатураДополнительныеРеквизиты.Ссылка = Товары.Ссылка |ГДЕ | Товары.ЭтоГруппа = ЛОЖЬ" СГРУППИРОВАТЬ ПО Товары.Ссылка; как то так |
|||
9
Конструктор1С
24.07.20
✎
09:30
|
(0) только через СКД. В запросах 1с нет PIVOT или чего-то подобного
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |