Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как все реализовать в одном запросе? (число прочтений - 2027 )
Admin_Net_1C
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 09. Июня 2007
Как все реализовать в одном запросе?
23. Июля 2007 :: 02:16
Печать  
Задача: отобрать все расходные накладные по которым не соответсвует сумма оплаты. Я реализовал следующим образом:
1) Запрос на выборку накладных:

ТекстЗапроса = "
|SELECT
|    Жур.IDDoc as [Док $Документ],
|    Жур.IDDocDef as Док_вид,
|    Жур.$ОбщийРеквизит.Фирма as [Фирма $Справочник.Фирмы],
|    $Док._флОплатаЗаНал as НалОплата
|FROM
|    _1SJourn Жур
|INNER JOIN
|    $Документ.Реализация as Док ON Док.IDDoc = Жур.IDDoc
|WHERE
|    Жур.IDDocDef = $ВидДокумента.Реализация AND
|    Жур.$ОбщийРеквизит.Фирма = :ФирмаКомиссионер AND
|    $Док._флОплатаЗаНал = 1 AND
|    Жур.Closed & 1 = 1";


2) В цикле перебираю полученную вборку документов и формирую запрос на получение подчиненных документов:


ТекстЗапроса = "
|SELECT
|    Жур.IDDoc as [Док $Документ],
|    Жур.IDDocDef as Док_вид
|FROM
|    _1Sjourn Жур
|INNER JOIN
|    _1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
|                      Отбор.MDID = 0 AND
|                     Отбор.ParentVal = :ВыбДок*
|WHERE
|    Жур.IDDocDef = $ВидДокумента.ПКО OR
|    Жур.IDDocDef = $ВидДокумента.СтрокаВыпискиПриход OR
|    Жур.IDDocDef = $ВидДокумента.ВозвратОтПокупателя";


Потом анализирую СуммаОтгрузки-СуммаВозвратов <> СуммаОплаты - вывод информации в отчет.
Вопрос: как объединить запросы, т.е. чтобы в одном запросе выбирались документы по отгрузке и подчиненные им по возвратам и оплате и в итоговую выборку попадали только те, у которых расхождения по условию: СуммаОтгрузки-СуммаВозвратов <> СуммаОплаты.

Заранее благодарю
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Как все реализовать в одном запросе?
Ответ #1 - 23. Июля 2007 :: 02:56
Печать  
Не понял вчём проблема? Пиши один запрос в котором будут все нужные документы и в нём проверяй своё условие
  
Наверх
ICQ  
IP записан
 
Admin_Net_1C
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 09. Июня 2007
Re: Как все реализовать в одном запросе?
Ответ #2 - 23. Июля 2007 :: 03:22
Печать  
а ты думаешь я вопрос на форуме задал, чтобы разрешение твое получить на написание одного запроса? Я не настолько хорошо знаю SQL, поэтому и попросил помощи на форуме в объединении этих двух запросов в один!
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Как все реализовать в одном запросе?
Ответ #3 - 23. Июля 2007 :: 04:35
Печать  
Admin_Net_1C писал(а) 23. Июля 2007 :: 03:22:
а ты думаешь я вопрос на форуме задал, чтобы разрешение твое получить на написание одного запроса? Я не настолько хорошо знаю SQL, поэтому и попросил помощи на форуме в объединении этих двух запросов в один!

Ну тогда так и пиши "напишите мне программу...." Улыбка
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Как все реализовать в одном запросе?
Ответ #4 - 23. Июля 2007 :: 05:10
Печать  
На вот как пример объединения запросов Улыбка

     |SELECT
     |   Данные.ИД as ИД,
     |      Данные.Заказчик as [Заказчик $Неопределенный],            
     |      Данные.Количество as Количество,
     |      Данные.ДокЗаявка as [ДокЗаявка $Документ.ЗаявкаОкончательная],
     |      Данные.Распределено as Распределено,
     |      Данные.Нераспределено as Нераспределено,
     |   ROUND(ISNULL(case (ISNULL(Данные.Количество, 0))
     |      when 0 THEN 0
     |      else (Данные.Распределено/Данные.Количество)
     |      end, 0)*100,0) as Процент,
     |      Данные.Приоритет as Приоритет
     |
     |FROM (
     |      SELECT 
     |            $Заяв.Заказчик + Заяв.IDDoc as ИД,
     |          $Заяв.Заказчик as Заказчик,            
     |          SUM(Ном.Количество) as Количество,
     |          Заяв.IDDoc as   ДокЗаявка,
     |          SUM(Ном.Распределено)  as Распределено,
     |          SUM(Ном.Количество - Ном.Распределено) as Нераспределено,
     |          ЗаявРаспред.Priority as Приоритет
     |      FROM CurRequest as ЗаявРаспред (nolock)
     |      INNER JOIN $Документ.ЗаявкаОкончательная as Заяв (nolock) on Заяв.IDDoc  =  ЗаявРаспред.IDDoc
     |      left join (
     |               SELECT
     |                        0 as Количество,      
     |                           Заяв.IDDoc as  ДокЗаявка,
     |                           SUM(Distr.NetWeight)  as Распределено
     |          FROM CurRequest as ЗаявРаспред (nolock)
     |          INNER JOIN $Документ.ЗаявкаОкончательная as Заяв (nolock) on  Заяв.IDDoc = ЗаявРаспред.IDDoc
     |               left  JOIN Distribution as Distr (nolock) on (Distr.IDDocRequest = Заяв.IDDoc)
     |               WHERE Distr.isMark = 0      
     |          GROUP BY ( Заяв.IDDoc)
     |
     |               UNION all
     |               SELECT
     |                        SUM($ЗаявC.КолвоКг) as Количество,      
     |                           ЗаявC.IDDoc as  ДокЗаявка,
     |                           0  as Распределено
     |          FROM CurRequest as ЗаявРаспред (nolock)
     |               INNER JOIN _1SJOURN as  жур (nolock) on  жур.IDDoc = ЗаявРаспред.IDDoc 
     |               INNER JOIN $ДокументСтроки.ЗаявкаОкончательная as ЗаявC (nolock) on   ЗаявРаспред.IDDoc = ЗаявC.IDDoc
     |          GROUP BY ( ЗаявC.IDDoc)
     |                  ) as Ном on Ном.ДокЗаявка = Заяв.IDDoc
     |      GROUP BY $Заяв.Заказчик, Заяв.IDDoc, ЗаявРаспред.Priority) as Данные
     |";
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Как все реализовать в одном запросе?
Ответ #5 - 23. Июля 2007 :: 07:40
Печать  
2(0) Может проще использовать регистр/проводки?
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать