Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Условия в запросе (число прочтений - 2241 )
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Условия в запросе
14. Марта 2007 :: 11:10
Печать  
Нужно
1. Отбирать документы по контрагенту. В принципе просто:
|SELECT
| Жур.IdDoc AS [Док $Документ.ПоступлениеОС],
|SUM($ДкОСРСт.Всего)        AS     Vs02
|FROM
|_1SJourn as Жур (nolock)
|,$Документ.ПоступлениеОС AS ДкОСР
|,$ДокументСтроки.ПоступлениеОС AS ДкОСРСт
|WHERE
|(Жур.IsMark  =0) AND  (Жур.Closed & 1 =1)   AND    (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) 
|AND (Жур.IdDoc =ДкОСР.IdDoc) AND (ДкОСР.IdDoc  =ДкОСРСт.IdDoc ) AND (Жур.IDDocDef = $ВидДокумента.ПоступлениеОС)
|AND ($ДкОСР.ВариантРасчетаНалогов =:ВариантРасчетаНалогов)
|AND  ($ДкОСР.Контрагент=:Контрагент)
|GROUP BY  Жур.IdDoc

Но:
2. Если Контрагент не выбран, нужно отбирать по всем контрагентам.
Как это реализовать в одном запросе?
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Условия в запросе
Ответ #1 - 14. Марта 2007 :: 11:31
Печать  
Код
Выбрать все
|SELECT
| Жур.IdDoc AS [Док $Документ.ПоступлениеОС],
|SUM($ДкОСРСт.Всего)        AS     Vs02
|FROM
|_1SJourn as Жур (nolock)
|,$Документ.ПоступлениеОС AS ДкОСР  
|,$ДокументСтроки.ПоступлениеОС AS ДкОСРСт
|WHERE
|(Жур.IsMark  =0) AND  (Жур.Closed & 1 =1)   AND    (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~)  
|AND (Жур.IdDoc =ДкОСР.IdDoc) AND (ДкОСР.IdDoc  =ДкОСРСт.IdDoc ) AND (Жур.IDDocDef = $ВидДокумента.ПоступлениеОС)
|AND ($ДкОСР.ВариантРасчетаНалогов =:ВариантРасчетаНалогов)
|" + ?(ВыбКонтрагент.Выбран() >0, "AND  ($ДкОСР.Контрагент=:Контрагент) ","") + "
|GROUP BY  Жур.IdDoc
 

  
Наверх
ICQ  
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: Условия в запросе
Ответ #2 - 14. Марта 2007 :: 11:39
Печать  
имелось ввиду проверка в запросе. Средствами SQL.
  
Наверх
 
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Условия в запросе
Ответ #3 - 14. Марта 2007 :: 15:06
Печать  
RuporAbsurda писал(а) 14. Марта 2007 :: 11:39:
имелось ввиду проверка в запросе. Средствами SQL.


А зачем это если не секрет, чем не подходит вариант от spock?
  
Наверх
ICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Условия в запросе
Ответ #4 - 15. Марта 2007 :: 04:30
Печать  
можно так
AND  (:Контрагент = '     0   ' OR $ДкОСР.Контрагент=:Контрагент)
или, для пущей пущести
AND  (:Контрагент = '     0   ' OR :Контрагент = '' OR $ДкОСР.Контрагент=:Контрагент)

сравнения с константами (:Контрагент = '     0   ') скуль хорошо оптимизирует, мы проверяли  Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать