|
Подскажите: три ТЗ в запросе | ☑ | ||
---|---|---|---|---|
0
dft2014
29.08.18
✎
18:53
|
Есть три таблицы значений:
тзОстатки тзОстатки_МинусМесяц тзОстатки_КонецГода Собираю их с помощью запроса в одну, причем: - ФИО, Подразделение и Остаток должно тянуться из тзОстатки; - ОстатокПредДата должно тянуться из тзОстатки_МинусМесяц; - ОстатокКонецГода должно тянуться из тзОстатки_КонецГода В результате, если Остаток пустой, то возвращает пустое ФИО, Подразделение и Должность. Пробовала вместо | ВТ.ФИО КАК ФИО, писать | естьNull(ВТ.ФИО,ВТКонецГода.ФИО) КАК ФИО, результат одинаковый. Ниже код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗ.ФИО КАК ФИО, | ТЗ.Подразделение КАК Подразделение, | ТЗ.ОстатокТекДата КАК ОстатокТекДата |ПОМЕСТИТЬ ВТ |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТЗПредДата.ФИО КАК ФИО, | ТЗПредДата.ОстатокПредДата КАК ОстатокПредДата |ПОМЕСТИТЬ ВТПредДата |ИЗ | &ТЗПредДата КАК ТЗПредДата |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТЗКонецГода.ФИО КАК ФИО, | ТЗКонецГода.ОстатокКонецГода КАК ОстатокКонецГода |ПОМЕСТИТЬ ВТКонецГода |ИЗ | &ТЗКонецГода КАК ТЗКонецГода |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ.ФИО КАК ФИО, //| естьNull(ВТ.ФИО,ВТКонецГода.ФИО) КАК ФИО, //тоже самое выдает | ВТ.Подразделение КАК Подразделение, | ВТПредДата.ОстатокПредДата КАК ОстатокПредДата, | ВТ.ОстатокТекДата КАК ОстатокТекДата, | ВТКонецГода.ОстатокКонецГода КАК ОстатокКонецГода |ИЗ | ВТ КАК ВТ | ПОЛНОЕ СОЕДИНЕНИЕ ВТПредДата КАК ВТПредДата | ПО ВТ.ФИО = ВТПредДата.ФИО | ПОЛНОЕ СОЕДИНЕНИЕ ВТКонецГода КАК ВТКонецГода | ПО ВТ.ФИО = ВТКонецГода.ФИО"; Запрос.УстановитьПараметр("ТЗ",тзОстатки); Запрос.УстановитьПараметр("ТЗПредДата",тзОстатки_МинусМесяц); Запрос.УстановитьПараметр("ТЗКонецГода",тзОстатки_КонецГода); ИтоговаяТаблица = Запрос.Выполнить().Выгрузить(); |
|||
1
Sapiens_bru
29.08.18
✎
19:11
|
Тут можно извратится и собрать конструкцией ВЫБОР все возможные варианты Null из таблиц.
Но я предлагаю поступить намного проще - используйте для связи не соединение таблиц, а объединение. Объединяйте поля ФИО из всех таблиц, а поля остатков объединяйте с нулевыми значениями. ФИО Пред 0 0 ФИО 0 Тек 0 ФИО 0 0 Конец Затем полученную таблицу пихаете в новую ВТ и группируете по полю ФИО, суммируя все остальные поля. Если нужно, потом можно связать с первой таблицей для получения подразделений. Будет работать на порядки быстрее и не надо думать где там NULL |
|||
2
iolxrfsf
29.08.18
✎
19:13
|
> возвращает пустое ФИО, Подразделение и Должность.
а где здесь вообще "Должность"? В тзОстатки_МинусМесяц и тзОстатки_КонецГода есть Подразделение? > Пробовала "естьNull(ВТ.ФИО,ВТКонецГода.ФИО) КАК ФИО" Можно ещё "естьNull(ВТ.ФИО,естьNull(ВТКонецГода.ФИО,ВТПредДата.ФИО)) КАК ФИО" |
|||
3
МихаилМ
29.08.18
✎
19:19
|
Вы Мисти ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |