Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:56

Логика в запросе

Автор Sinsinmin, 18 мар 2011, 09:50

0 Пользователей и 1 гость просматривают эту тему.

Sinsinmin


|ГДЕ
| (Формовка.Дата МЕЖДУ &НачальнаяДата И &КонечнаяДата
| И ФормовкаНомерноеЛитье.Отливка = &Отливка) И [color=yellow]((НЕ ЗаявкиНаГодноеНомерноеЛитьеСрезПервых.Регистратор.Дата ЕСТЬ NULL) И                      |ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор.Дата ЕСТЬ NULL))[/color] ИЛИ [color=green](Не ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор.Дата Есть NULL)[/color]


Каким образом можно совместить эти два разных условия. По отдельности жёлтое и зелёное условия работают. А вместе, описанным образом, выполнение запроса виснет на долгий срок. 

Sinsinmin

Что то неудачно отформатировал. Щас ещё раз попробую

Sinsinmin


|ГДЕ
| (Формовка.Дата МЕЖДУ &НачальнаяДата И &КонечнаяДата
| И ФормовкаНомерноеЛитье.Отливка = &Отливка) И
|[color=yellow]((НЕ ЗаявкиНаГодноеНомерноеЛитьеСрезПервых.Регистратор.Дата ЕСТЬ NULL) И                     
|ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор.Дата ЕСТЬ NULL))[/color]
|ИЛИ [color=green](Не ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор.Дата Есть NULL)[/color]


Каким образом можно совместить эти два разных условия. По отдельности жёлтое и зелёное условия работают. А вместе, описанным образом, выполнение запроса виснет на долгий срок. 

Klyacksa

Ну во-первых, зачем проверять
НЕ ЗаявкиНаГодноеНомерноеЛитьеСрезПервых.Регистратор.Дата ЕСТЬ NULL
Если нет Даты, то нет и регистратора. Можно регистратора проверять на NULL:
НЕ ЗаявкиНаГодноеНомерноеЛитьеСрезПервых.Регистратор ЕСТЬ NULL

Попробуйте подправить, возможно, быстрее работать будет.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Sinsinmin

Ошибку понял в запросе, но вот как её исправить. Дело в том что второе условие не связывается с основным. И запрос выбирает всё что попадает под второе условие (Не ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор.Дата Есть NULL). Обязательно ли нужно ещё раз переписывать начальное условие или можно как то по другому?

***Vjacheslav***

|ГДЕ
|    (Формовка.Дата МЕЖДУ &НачальнаяДата И &КонечнаяДата
|    И ФормовкаНомерноеЛитье.Отливка = &Отливка) И
|(((НЕ ЗаявкиНаГодноеНомерноеЛитьеСрезПервых.Регистратор.Дата ЕСТЬ NULL) И                     
|ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор.Дата ЕСТЬ NULL))
|ИЛИ (Не ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор.Дата Есть NULL))
пробуй так

Klyacksa

Я же правильно понимаю, первые два условия должны всегда выполняться,
потом проверяются (3-е и 4-е) или 5-е

Тогда так:
|    (Формовка.Дата МЕЖДУ &НачальнаяДата И &КонечнаяДата
|    И ФормовкаНомерноеЛитье.Отливка = &Отливка) И
| ((НЕ ЗаявкиНаГодноеНомерноеЛитьеСрезПервых.Регистратор ЕСТЬ NULL) И                      
| ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор ЕСТЬ NULL)
| ИЛИ (Не ОтгрузкиНомерноеЛитьеСрезПервых.Регистратор Есть NULL))
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

***Vjacheslav***

у меня тоже самое написано только скобок лишних побольше:)

Klyacksa

***Vjacheslav***, а найдите еще 3 отличия  B)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Sinsinmin

Так не получится. Условие с помощью фильтров. Поэтому оно может быть само по себе. И тогда начальная третья кавычка будет без закрывающей. В общем пришлось каждый раз добавлять основное условие.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск