Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Прямой запрос по подчиненным документам   (число прочтений - 11124 )
Baik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 31. Октября 2006
Прямой запрос по подчиненным документам  
31. Октября 2006 :: 12:11
Печать  
Здравствуйте.
Вот столкнулся с задачей и никак не могу понять как ее решить :(
В общем вопрос состоит в следующем. Мне нужно отобрать накладные у которых ЛИБО нет подчиненных документов оплаты, ЛИБО сумма по таким документам меньше суммы накладной.
Наверное должно быть что-то на подобии:

    |Select
    |    Док.IDdoc as [Документ $Документ.Реализация]
    |From
    |    $Документ.Реализация as Док
    |Left Join (   
    |    Select                                  
    |        $ДокОп.ДокОснование as IIN,
    |        SUM($ДокОп.СуммаВзаиморасчетов) as Сумма
    |    From
    |        $Документ.ПКО as ДокОп
    |    Group By   
    |        $ДокОп.ДокОснование
    |    ) as OpDoc ON OpDoc.IIN = Док.iddoc
    |Where
    |    ($Док.СуммаВзаиморасчетов> OpDoc.Сумма) or (OpDoc.Сумма = 0) 

, но вот это (OpDoc ON OpDoc.IIN = Док.iddoc) условие не кактит!?
как подругому.. не знаю.. может кто уже сталкивался с такой задачей?
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос по подчиненным документам  
Ответ #1 - 31. Октября 2006 :: 12:18
Печать  
Ну во первых это не подчиненные документы, а простая связка документов. Во вторых, зачем так сложно делать?
По существу - попробуй убрать условие:
  |Where
    |    ($Док.СуммаВзаиморасчетов> OpDoc.Сумма) or (OpDoc.Сумма = 0) 
  
Наверх
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос по подчиненным документам  
Ответ #2 - 31. Октября 2006 :: 12:19
Печать  
[quote author=Baik link=1162296715/0#0 date=1162296715]
но вот это (OpDoc ON OpDoc.IIN = Док.iddoc) условие не кактит!?
[/quote]
а почему оно должно кактить? ты внимательно то сам посмотри что ты "изобразил" то...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос по подчиненным документам  
Ответ #3 - 31. Октября 2006 :: 12:24
Печать  
Если $ДокОп.ДокОснование - документ неопределённого вида, то
Код
Выбрать все
OpDoc.IIN = $ВидДокумента36.Реализация + Док.iddoc 


И подзапрос разверни. Он здесь лишний.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Baik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 31. Октября 2006
Re: Прямой запрос по подчиненным документам  
Ответ #4 - 31. Октября 2006 :: 12:32
Печать  
pvase писал(а) 31. Октября 2006 :: 12:18:
Ну во первых это не подчиненные документы, а простая связка документов. Во вторых, зачем так сложно делать?

Был бы очень благодарен, еслиб ты подсказал как проще? Как в условие впихнуть выборку по _1SCRDOC и при этом соблюсти условие задачи?

to: Славко
Пытался отфильтроватьпо Род. докам, но так сравнивать действительно нельзя.
Нерешительный
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос по подчиненным документам  
Ответ #5 - 31. Октября 2006 :: 12:34
Печать  
думаю тебе стоит почитать на:
http://metaprog.co.ua/secrprog/index.html

описание полей таблиц, правда это для MSSQL, но 90% там применимо и для DBF
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Baik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 31. Октября 2006
Re: Прямой запрос по подчиненным документам  
Ответ #6 - 31. Октября 2006 :: 12:48
Печать  
to: Славко
база то у меня скуэль, только я не давно начал изучать прямые запросы.. поэтому и метаюсь между вариантами реализации.

to: berezdetsky
всмысле разверни?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос по подчиненным документам  
Ответ #7 - 31. Октября 2006 :: 13:08
Печать  
Baik писал(а) 31. Октября 2006 :: 12:48:
to: berezdetsky
всмысле разверни?

Код
Выбрать все
Select Док.IDdoc [Документ $Документ.Реализация]
From $Документ.Реализация Док (nolock)
    Left Join $Документ.ПКО ДокОп (nolock) ON $ДокОп.ДокОснование = $ВидДокумента36.Реализация +Док.iddoc
GROUP BY Док.IDdoc, $Док.СуммаВзаиморасчетов
HAVING $Док.СуммаВзаиморасчетов > IsNull(SUM($ДокОп.СуммаВзаиморасчетов), 0) 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Baik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 31. Октября 2006
Re: Прямой запрос по подчиненным документам  
Ответ #8 - 31. Октября 2006 :: 13:19
Печать  
berezdetsky писал(а) 31. Октября 2006 :: 13:08:
Baik писал(а) 31. Октября 2006 :: 12:48:
to: berezdetsky
всмысле разверни?

Код
Выбрать все
Select Док.IDdoc [Документ $Документ.Реализация]
From $Документ.Реализация Док (nolock)
    Left Join $Документ.ПКО ДокОп (nolock) ON $ДокОп.ДокОснование = $ВидДокумента36.Реализация +Док.iddoc
GROUP BY Док.IDdoc, $Док.СуммаВзаиморасчетов
HAVING $Док.СуммаВзаиморасчетов > IsNull(SUM($ДокОп.СуммаВзаиморасчетов), 0) 



Пасиба....
  
Наверх
 
IP записан
 
Baik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 31. Октября 2006
Re: Прямой запрос по подчиненным документам  
Ответ #9 - 07. Ноября 2006 :: 08:33
Печать  
В дополнение к вопросу:
Кроме отбора мне нужно еще получить итоги по контрагентам отобранных документов. И вот тут возникает новая проблема: "установленные с помощью раздела HAVING условия игнорируются при суперагрегировании данных с помощью WITH ROLLUP" поэтму итог получается по всем документам реализации данного контрагента.
Решение скорее состоит в переносе условие в конструкцию Where, но там (на сколько я понял) нельзя использовать функции типа sum, а без них весь смылс условия теряется.
Как тут быть?
  
Наверх
 
IP записан
 
Baik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 31. Октября 2006
Re: Прямой запрос по подчиненным документам  
Ответ #10 - 07. Ноября 2006 :: 08:50
Печать  
Ни у кого никаких мыслей?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос по подчиненным документам  
Ответ #11 - 07. Ноября 2006 :: 11:06
Печать  
Baik писал(а) 07. Ноября 2006 :: 08:33:
И вот тут возникает новая проблема: "установленные с помощью раздела HAVING условия игнорируются при суперагрегировании данных с помощью WITH ROLLUP"

Эта цитата откуда?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Baik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 31. Октября 2006
Re: Прямой запрос по подчиненным документам  
Ответ #12 - 07. Ноября 2006 :: 11:14
Печать  
berezdetsky писал(а) 07. Ноября 2006 :: 11:06:
Эта цитата откуда?


http://metaprog.co.ua/secrprog/tran_sql.html#_6
Раздел Having
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос по подчиненным документам  
Ответ #13 - 07. Ноября 2006 :: 11:31
Печать  
Baik писал(а) 07. Ноября 2006 :: 11:14:
berezdetsky писал(а) 07. Ноября 2006 :: 11:06:
Эта цитата откуда?


http://metaprog.co.ua/secrprog/tran_sql.html#_6
Раздел Having

Прочитай внимательнее - там говорится о WITH CUBE. К WITH ROLLUP это не относится.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос по подчиненным документам  
Ответ #14 - 07. Ноября 2006 :: 11:41
Печать  
А проблему решить можно, завернув запрос с HAVING в подзапрос.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать