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


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 26. Октября 2007
помогите оптимизировать запрос
26. Октября 2007 :: 10:44
Печать  
Здравствуйте!
Хочу выбрать оплаты по номенклатуре пропорционально стоимости продажи
написал вот такой запрос:

|SELECT Подзапрос.Документ [Документ $Документ]
|, $Покупатели.СуммаРуб СуммаРуб
|, $Покупатели.СуммаУпр СуммаУпр
|, (($Покупатели.СуммаРуб * Подзапрос.Процент)) СуммаПоНоменклатуреРуб
|, (($Покупатели.СуммаУпр * Подзапрос.Процент)) СуммаПоНоменклатуреУпр
|FROM (SELECT (dbo.sp_tohex(Журнал.IDDOCDEF, 4) + ПартииНаличие.IDDOC) Документ
|      , $ПартииНаличие.ПродСтоимость ПродСтоимость
|      , $ПартииНаличие.Номенклатура Номенклатура
|      , Подзапрос1.СуммаПродСтоимость
|      , ($ПартииНаличие.ПродСтоимость/Подзапрос1.СуммаПродСтоимость) Процент
|   FROM $Регистр.ПартииНаличие AS ПартииНаличие
|   INNER JOIN _1SJOURN AS Журнал ON ПартииНаличие.IDDOC = Журнал.IDDOC
|   LEFT JOIN (SELECT ПартииНаличие.IDDOC Документ
|      , Sum($ПартииНаличие.ПродСтоимость) СуммаПродСтоимость
|      FROM $Регистр.ПартииНаличие AS ПартииНаличие
|                       INNER JOIN _1SJOURN AS Жур ON ПартииНаличие.IDDOC = Жур.IDDOC
|      WHERE (Жур.DATE_TIME_IDDOC >= :НачДата)
|                  AND (Жур.DATE_TIME_IDDOC <= :КонДата~)
|      GROUP BY ПартииНаличие.IDDOC) AS Подзапрос1 ON ПартииНаличие.IDDOC = Подзапрос1.Документ
|            WHERE (Журнал.DATE_TIME_IDDOC >= :НачДата)
|                  AND (Журнал.DATE_TIME_IDDOC <= :КонДата~)) AS Подзапрос
|    INNER JOIN $Регистр.Покупатели AS Покупатели ON Подзапрос.Документ = $Покупатели.КредДокумент
не пойму где перегружаю запрос - он выполняется очень долго и выборка слишком большая
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите оптимизировать запрос
Ответ #1 - 26. Октября 2007 :: 11:14
Печать  
Непонятен смысл процента при отсутствии номенклатуры в выходном списке.
И, если Номенклатура - не единственное измерение регистра ПартииНаличие, не хватает группировки в Подзапрос.
  

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


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 26. Октября 2007
Re: помогите оптимизировать запрос
Ответ #2 - 26. Октября 2007 :: 11:50
Печать  
с номенклатурой тоже висит
в подзапросе сумма по документу для расчета пропорции
какой группировки не хватает?
  
Наверх
 
IP записан
 
basurmanin
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 26. Октября 2007
Re: помогите оптимизировать запрос
Ответ #3 - 26. Октября 2007 :: 11:51
Печать  
группировка там по iddoc
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите оптимизировать запрос
Ответ #4 - 26. Октября 2007 :: 12:05
Печать  
[quote author=basurmanin link=1193395493/0#2 date=1193399419]с номенклатурой тоже висит
в подзапросе сумма по документу для расчета пропорции
какой группировки не хватает?[/quote]
Сумма по документу - в Подзапрос1, а в Подзапрос - группировки нет, что означает получение всех вообще движений по регистру за период. Отсюда и большая выборка.
[edit][size=12]И суммирование ресурса без учёта вида движения [i]выглядит [/i]по меньшей мере странно.[/size][/edit]
  

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


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 26. Октября 2007
Re: помогите оптимизировать запрос
Ответ #5 - 26. Октября 2007 :: 12:19
Печать  
понял, спасибо
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: помогите оптимизировать запрос
Ответ #6 - 26. Октября 2007 :: 15:59
Печать  
>>...оплаты по номенклатуре пропорционально стоимости продажи
Пропорционально доле номенклатуры в общей сумме продаж?
Типа продали чайник на 100 руб а всего Чайник  100 + Лопаты 200 = 300, значит 1/3?
Кстати, оплата там, видимо, неправильно считается... надо учитывать знак движения и, возможно, код операции или что там... непонятно какая конфига
  

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