|
Не работает условие в запросе. |
☑ |
0
lanc2233
31.07.19
✎
10:00
|
Запрос для динамического списка
ВЫБРАТЬ
НоменклатураСпр.Ссылка,
ЦеныОбычные.Цена КАК ОбычнаяЦена,
ЦеныАкционные.Цена КАК Акция
ИЗ
Справочник.Номенклатура КАК НоменклатураСпр
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦены = &ТипЦеныОбычная) КАК ЦеныОбычные
ПО НоменклатураСпр.Ссылка = ЦеныОбычные.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦены = &ТипЦеныАкционная) КАК ЦеныАкционные
ПО НоменклатураСпр.Ссылка = ЦеныАкционные.Номенклатура
ГДЕ
ЕСТЬNULL(ЦеныАкционные.Цена,ЕСТЬNULL(ЦеныОбычные.Цена, 0)) > &ЦенаОт
Нужно выбрать строки где искомая цена больше значения параметра.
Искомая цена это акционная, если она есть, или обычная если нет акционной.
С таким запросом, как я написал, выдает все строки, в том числе те где нет ни одной цены.
Что с ним не так?
|
|
1
VS-1976
31.07.19
✎
10:03
|
Возможно не передаются параметры, проверь
|
|
2
Мимохожий Однако
31.07.19
✎
10:09
|
Справочник Номенклатура слева. Не факт, что у него цена установлена. Сделай внутреннее соединение в порядке эксперимента
|
|
3
НЕА123
31.07.19
✎
10:15
|
(1)+1
(2)+1
немного упростить
ГДЕ
ЕСТЬNULL(ЦеныАкционные.Цена, ЦеныОбычные.Цена) > &ЦенаОт
|
|
4
lanc2233
31.07.19
✎
10:17
|
даже если в запрос просто >100 написать то не срабатывает.
Есть позиции, где ни одна ни вторая цена не установлена, это я и пытаюсь двумя ЕстьNull обработать
|
|
5
ДядяМитяй
31.07.19
✎
10:20
|
я бы попробовал на два условия с ЕстьNull разбить через ИЛИ. никаких обоснований, просто метод тыка)
|
|
6
Мимохожий Однако
31.07.19
✎
10:22
|
(4) А теперь еще раз...
Напиши, что ты хочешь в результате, а не что пытался. Каков план запроса?
|
|
7
sqr4
31.07.19
✎
10:22
|
потому что (1)
|
|
8
ДядяМитяй
31.07.19
✎
10:26
|
+(5) и комментируя в консоли разные условия посмотреть что получится
|
|
9
hhhh
31.07.19
✎
10:27
|
(4) может там прошлогодние цены есть. или 5-летней давности
|
|
10
Мимохожий Однако
31.07.19
✎
10:28
|
Еще можно выбросить таблицу справочника номенклатура и оставить только две таблицы из регистра цен
|
|
11
ДядяМитяй
31.07.19
✎
10:28
|
(9) если это срез последних это актуальные цены. если кому не нравится - пусть заводит цены вовремя ))
|
|
12
hhhh
31.07.19
✎
10:36
|
(11) ну может у тс другое поминание, может он думает, если цены установлены 10 лет назад, то они уже не актуальны.
|
|
13
lEvGl
гуру
31.07.19
✎
11:01
|
по-моему ошибка при сравнениях с Null, в Где
попробуйте сначала преобразовать
Выбрать ЕстьNull(Цена, 0) Как Цена
Выбрать ЕстьNull(Цен2, 0) Как Цена2
Поместить ВТ;
Выбрать вт.Номенклатура где ВТ.Цена > 100
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший