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


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Июля 2008
Примитивный вопрос по связыванию таблиц.
07. Апреля 2009 :: 15:14
Печать  
Цель: Получить корреспонденцию между двумя наборами счетов. Субконто - ТМЦ и колонку со значением реквизита справочника ТМЦ - ТипТМЦ ( тип - справочник "ТипыТМЦ")
     ТекстЗапроса = "
|      SELECT БИОборотыОсновной.Счет [Счет $Счет.Основной]
|            , БИОборотыОсновной.КорСчет [КорСчет $Счет.Основной]
|            , БИОборотыОсновной.Субконто1 [Субконто1 $Субконто]
|            , БИОборотыОсновной.КорСубконто1 [Контрагент $Субконто]
|            , $TMZ.ТипТМЦ      AS      [ТипТМЦ $Справочник.ТипыТМЦ]
|            , $TMZ.ПолнНаименование                              [ПолнНаименование]
|            , (БИОборотыОсновной.КоличествоОборотКт - БИОборотыОсновной.КоличествоОборотДт) AS Кво70
|            , (БИОборотыОсновной.СуммаОборотКт - БИОборотыОсновной.СуммаОборотДт) AS Сумма70
|            , БИОборотыОсновной.Субконто1_вид Субконто1_вид
|            , БИОборотыОсновной.КорСубконто1_вид Контрагент_вид
|            , Right(БИОборотыОсновной.ПозицияДокумента, 9) [Док $Документ]
|            , БИОборотыОсновной.ВидДокумента Док_вид
|      FROM $БИОбороты.Основной(:Дата1, :Дата2 ~,
|                  Документ,,
|                  (Счет IN (SELECT Val FROM #Acc)),
|                  ТМЦ,,(КорСчет IN (SELECT Val FROM #KAcc)),Контрагенты
|            ) AS БИОборотыОсновной
|LEFT JOIN $Справочник.ТМЦ AS TMZ (NOLOCK) ON (TMZ.ID = БИОборотыОсновной.Субконто1)";

по результату колонки с Типом тмц и полным наименованием пустые. Т.е. таблицы не связались. Что я делаю не так? Я - полнейший новичок. Нерешительный
  
Наверх
 
IP записан
 
Ptitz
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Июля 2008
Re: Примитивный вопрос по связыванию таблиц.
Ответ #1 - 07. Апреля 2009 :: 19:58
Печать  
спрашивала - отвечаю. Надо было написать в условии объединения: ON (($ВидСправочника36.ТМЦ +TMZ.ID) =  БИОборотыОсновной.Субконто1).

Но меня поверг в шок результат. Запрос выполнялся до этого 5 секунд (без объединения таблиц), а после - 56 секунд!!! в результирующей таблице 3696 строк. Так и должно быть или я что-то очень неоптимально сделала?
  
Наверх
 
IP записан
 
Ptitz
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Июля 2008
Re: Примитивный вопрос по связыванию таблиц.
Ответ #2 - 07. Апреля 2009 :: 20:09
Печать  
Это при том, что если сделать запрос без объединения таблиц, а потом перебрать в цикле строки ТЗ и присвоить ТипТМЦ (ТЗ.ТипТМЦ = ТЗ.ТМЦ.ТипТМЦ), то это присвоение занимает всего 3 секунды на всю таблицу...
Что я делаю не так?
  
Наверх
 
IP записан
 
Ptitz
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Июля 2008
Re: Примитивный вопрос по связыванию таблиц.
Ответ #3 - 07. Апреля 2009 :: 20:15
Печать  
О! Замена LEFT на INNER привела к уменьшению времени выполнения запроса с 57 до 3 секунд  Ужас
Почему?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Примитивный вопрос по связыванию таблиц.
Ответ #4 - 07. Апреля 2009 :: 20:46
Печать  
Было бы удивительно если бы было медленнее
Тут видимо итогов много, а скл насколько понимаю по-разному работает в таких случаях
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Примитивный вопрос по связыванию таблиц.
Ответ #5 - 07. Апреля 2009 :: 21:19
Печать  
а если так ON TMZ.ID =  right(БИОборотыОсновной.Субконто1,9)?
  
Наверх
 
IP записан
 
Ptitz
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 21. Июля 2008
Re: Примитивный вопрос по связыванию таблиц.
Ответ #6 - 08. Апреля 2009 :: 07:02
Печать  
alexdd писал(а) 07. Апреля 2009 :: 21:19:
а если так ON TMZ.ID =  right(БИОборотыОсновной.Субконто1,9)?

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