Вход | Регистрация
 

Не работает условие в запросе.

Не работает условие в запросе.
Я
   lanc2233
 
31.07.19 - 10:00
Запрос для динамического списка

ВЫБРАТЬ
    НоменклатураСпр.Ссылка,
    ЦеныОбычные.Цена КАК ОбычнаяЦена,
    ЦеныАкционные.Цена КАК Акция
ИЗ
    Справочник.Номенклатура КАК НоменклатураСпр
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦены = &ТипЦеныОбычная) КАК ЦеныОбычные
    ПО НоменклатураСпр.Ссылка = ЦеныОбычные.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦены = &ТипЦеныАкционная) КАК ЦеныАкционные
    ПО НоменклатураСпр.Ссылка = ЦеныАкционные.Номенклатура
ГДЕ
    ЕСТЬNULL(ЦеныАкционные.Цена,ЕСТЬNULL(ЦеныОбычные.Цена, 0)) > &ЦенаОт

Нужно выбрать строки где искомая цена больше значения параметра.
Искомая цена это акционная, если она есть, или обычная если нет акционной.

С таким запросом, как я написал, выдает все строки, в том числе те где нет ни одной цены.
Что с ним не так?
 
 
   VS-1976
 
1 - 31.07.19 - 10:03
Возможно не передаются параметры, проверь
   МимохожийОднако
 
2 - 31.07.19 - 10:09
Справочник Номенклатура слева. Не факт, что у него цена установлена. Сделай внутреннее соединение в порядке эксперимента
   НЕА123
 
3 - 31.07.19 - 10:15
(1)+1
(2)+1

немного упростить
ГДЕ 
    ЕСТЬNULL(ЦеныАкционные.Цена, ЦеныОбычные.Цена) > &ЦенаОт
   lanc2233
 
4 - 31.07.19 - 10:17
даже если в запрос просто >100 написать то не срабатывает.

Есть позиции, где ни одна ни вторая цена не установлена, это я и пытаюсь двумя ЕстьNull обработать
   ДядяМитяй
 
5 - 31.07.19 - 10:20
я бы попробовал на два условия с ЕстьNull разбить через ИЛИ. никаких обоснований, просто метод тыка)
   МимохожийОднако
 
6 - 31.07.19 - 10:22
(4) А теперь еще раз...
Напиши, что ты хочешь в результате, а не что пытался. Каков план запроса?
   sqr4
 
7 - 31.07.19 - 10:22
потому что (1)
   ДядяМитяй
 
8 - 31.07.19 - 10:26
+(5) и комментируя в консоли разные условия посмотреть что получится
   hhhh
 
9 - 31.07.19 - 10:27
(4) может там прошлогодние цены есть. или 5-летней давности
   МимохожийОднако
 
10 - 31.07.19 - 10:28
Еще можно выбросить таблицу справочника номенклатура и оставить только две таблицы из регистра цен
   ДядяМитяй
 
11 - 31.07.19 - 10:28
(9) если это срез последних это актуальные цены. если кому не нравится - пусть заводит цены вовремя ))
   hhhh
 
12 - 31.07.19 - 10:36
(11) ну может у тс другое поминание, может он думает, если цены установлены 10 лет назад, то они уже не актуальны.
   lEvGl
 
13 - 31.07.19 - 11:01
по-моему ошибка при сравнениях с Null, в Где
попробуйте сначала преобразовать
Выбрать ЕстьNull(Цена, 0) Как Цена
Выбрать ЕстьNull(Цен2, 0) Как Цена2
Поместить ВТ;
Выбрать вт.Номенклатура где ВТ.Цена > 100

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.