Форум OlegON > > >

Запрос с оператором OR не может завершить выполнение

13.12.2019 11:51


18.02.2019 13:13
m1n1mal
 
Здравствуйте.
Необходимо получить поставщиков для товара с действующими контрактами.
В БД Супермага, у контрактов есть колонка "ENDSAT", она отвечает за дату окончания контракта. У данной колонки есть два состояния null и установленная дата. Необходимо отобрать документы у кого ENDSAT null или дата установлена больше чем текущая дата (системная или заданная вручную)

Сам запрос:
SQL код:
select listagg(SMCLIENTINFO.NAME', 'within group (order by SMCLIENTINFO.NAME)
from SMCONTRACTSSMSPECCOSMDOCUMENTSSMCLIENTINFO
where SMCONTRACTS
.DOCTYPE SMDOCUMENTS.DOCTYPE and SMCONTRACTS.ID SMDOCUMENTS.ID
and SMSPECCO.DOCTYPE SMDOCUMENTS.DOCTYPE and SMSPECCO.DOCID SMDOCUMENTS.ID
and SMDOCUMENTS.DOCSTATE 3
and SMCONTRACTS.DOCTYPE 'CO'
and SMDOCUMENTS.CLIENTINDEX SMCLIENTINFO.ID
and SMSPECCO.ARTICLE '002761'
and SMCONTRACTS.ENDSAT IS NULL OR SMCONTRACTS.ENDSAT >= '18.02.2019' 
При использовании последнего фильтра с оператором OR, запрос не завершается, ожидал более 5 минут.
По отдельности, каждый из фильтров "SMCONTRACTS.ENDSAT IS NULL" или "SMCONTRACTS.ENDSAT >= '18.02.2019'" работают корректно, но с оператором OR почему-то не хочет завершаться.
Можете подсказать в чем ошибка и как ее можно устранить?
18.02.2019 13:29
Mtirt
 
Скобок не хватает.
Код:
and (SMCONTRACTS.ENDSAT IS NULL OR SMCONTRACTS.ENDSAT >= '18.02.2019')
18.02.2019 13:34
m1n1mal
 
Да, теперь все корректно отрабатывает.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.