|
Условие в вирт. таблице | ☑ | ||
|---|---|---|---|---|
|
0
John83
20.09.11
✎
14:49
|
Есть необходимость не выполнять вложенный запрос, если передается параметр в виде пустой ссылки.
Сам запрос: ВЫБРАТЬ ЗаказСПб.Номенклатура, 0 КАК Поле1, 0 КАК Поле2, 0 КАК Поле3, 0 КАК Поле4, 0 КАК Поле5, 0 КАК Поле6, 0 КАК Поле7, 0 КАК Поле8, ЕСТЬNULL(ЗаказСПб.ОсталосьОтгрузить, 0) КАК Поле9, ЗаказСПб.Характеристика ИЗ (ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, СУММА(ЗаказыПокупателейОстатки.КоличествоОстаток) КАК ОсталосьОтгрузить, ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры КАК Характеристика ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &Дата, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказСПб) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&Значение)) И ЗаказПокупателя В (ВЫБРАТЬ ВЫРАЗИТЬ(СводЗаказыПокупателейОстатки.ЗаказПокупателя КАК Документ.ЗаказПокупателя) КАК ЗаказПокупателя ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&Дата, ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстатки ГДЕ СводЗаказыПокупателейОстатки.КоличествоОстаток > 0)) КАК ЗаказыПокупателейОстатки СГРУППИРОВАТЬ ПО ЗаказыПокупателейОстатки.Номенклатура, ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры) КАК ЗаказСПб Проверка на пустую ссылку у параметра &ЗаказСПб. Сначала попробовал без всяких вложений сделать так: ВЫБОР КОГДА &ЗаказСПб = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) ТОГДА NULL ИНАЧЕ <условие> КОНЕЦ все замечательно - никаких записей по условию не выводит, но если добавить это условие при использовании вложенного запроса, то все очень глубоко задумывается... |
|||
|
1
John83
20.09.11
✎
14:50
|
Собственно, как еще можно задать такое условие?
|
|||
|
2
Sammo
20.09.11
✎
14:51
|
Номенклатура В (вложенный запрос)
может очень грустно выполняться. Лучше переписать, имхо |
|||
|
3
John83
20.09.11
✎
14:52
|
(2) всей мистой думали - это оказался самый производительный вариант :)
|
|||
|
4
palpetrovich
20.09.11
✎
15:02
|
(3) не могет быть :) ...2 запроса не пошустрей будет?
|
|||
|
5
John83
20.09.11
✎
15:06
|
||||
|
6
palpetrovich
20.09.11
✎
15:07
|
(5) многа букав ..я первый день из отпуска, боюсь неосилю :)
|
|||
|
7
John83
20.09.11
✎
15:08
|
+(5) в любом случае сейчас переделывать запрос не буду...
пока что в качестве параметра попробовал передать NULL - все работает, но по ходу запрос все равно отрабатывает |
|||
|
8
IronDemon
20.09.11
✎
15:14
|
Пакетный запрос с временными таблицами.
ВТ = ВЫБРАТЬ ВЫРАЗИТЬ(СводЗаказыПокупателейОстатки.ЗаказПокупателя КАК Документ.ЗаказПокупателя) КАК ЗаказПокупателя ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&Дата, ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстатки ГДЕ СводЗаказыПокупателейОстатки.КоличествоОстаток > 0) ВЫБОР КОГДА &ЗаказСПб = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) ТОГДА Истина ИНАЧЕ ... ЗаказПокупателя В (выбрать из ВТ) КОНЕЦ |
|||
|
9
John83
20.09.11
✎
15:24
|
(8) надо будет попробовать
спасибо |
| Форум | Правила | Описание | Секции | Поиск |