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


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
помогите с соединением
01. Сентября 2014 :: 10:10
Печать  
SELECT
     РегРезервы.ЗаявкаПокупателя as [Заявка $Документ],
     ...
FROM #T2BF8A0487FEA4A01ACF923656D698682 as РегРезервы
INNER JOIN (select
         Жур.iddoc as [Док $Документ],
         Жур.iddocdef as Док_вид
         from _1SJourn as Жур (nolock)
         where Жур.iddocdef=10846) as t
ON РегРезервы.ЗаявкаПокупателя=t.Док
GROUP BY
     РегРезервы.ЗаявкаПокупателя
ТЗРез=ODBCRecordset.ВыполнитьИнструкцию(Текст);
{Глобальный модуль(26482)}: State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя столбца "Док".

не могу понять в чем ошибка... все алиасы вроде на местах...
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: помогите с соединением
Ответ #1 - 01. Сентября 2014 :: 10:35
Печать  
В подзапросах типизация не нужна, надо писать так: Жур.iddoc as Док

Настоятельно рекомендую статью, на которую вам давали ссылку, не просто пробежать глазами, а разобрать каждый пример, каждую конструкцию в запросе. В ней ни одного лишнего слова нет, сплошь выжимка - для начала крайне полезно
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите с соединением
Ответ #2 - 01. Сентября 2014 :: 10:42
Печать  
собственна, там и сам подзапрос не нужен
  
Наверх
 
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: помогите с соединением
Ответ #3 - 01. Сентября 2014 :: 10:56
Печать  
честно признать запутался, потому опишу полностью (по факту это продолжение темы моего предидущего топика). Есть запрос по регистру с использованием ВТ ОстаткиОбороты, тип значений измерения "Заявка" - Документ неопределенного вида. Задача в том, чтобы наложить фильтр на измерение по документу вида "ЕП_ПотребностьКлиента". Я пытался сделать это внешним (относитльно ВТ) джойном с общим журналом. Но колонка "Заявка" ВТ уже типизирована...

SELECT
     РегРезервы.ЗаявкаПокупателя as [Заявка $Документ],
     sum(РегРезервы.КоличествоНачальныйОстаток) as КоличествоНачОст,
     sum(РегРезервы.КоличествоПриход) as КоличествоПриход,
     sum(РегРезервы.КоличествоРасход) as КоличествоРасход,
     sum(РегРезервы.КоличествоКонечныйОстаток) as КоличествоКонОст
FROM $РегистрОстаткиОбороты.РезервыТМЦ(:НачДата, :КонДата~, Документ,,,,,) as РегРезервы
INNER JOIN (select iddoc from $Документ.ЕП_ПотребностиКлиента (nolock)) as t
ON РегРезервы.ЗаявкаПокупателя=t.iddoc
GROUP BY
     РегРезервы.ЗаявкаПокупателя

коллега выше заметил что в подзапросе типизация не нужна, но если ее убрать, то запрос возвращает пустоту...
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: помогите с соединением
Ответ #4 - 01. Сентября 2014 :: 10:59
Печать  
pisarev писал(а) 01. Сентября 2014 :: 10:56:
Я пытался сделать это внешним (относитльно ВТ) джойном с общим журналом.

Это правильно. Покажите текст запроса полностью
  
Наверх
 
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: помогите с соединением
Ответ #5 - 01. Сентября 2014 :: 11:01
Печать  
дело видимо в том, что в колоке "Заявка" ВТ содержатся документы РАЗНЫХ видов и "нетипизированный" джойн приводит к тому что запрос ничего не возвращает
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите с соединением
Ответ #6 - 01. Сентября 2014 :: 11:16
Печать  
Если фильтр по заявке, то просто

Код
Выбрать все
where left(РегРезервы.ЗаявкаПокупателя,4) = $ВидДокумента36.Нужный 



без всяких соединений с чем либо
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: помогите с соединением
Ответ #7 - 01. Сентября 2014 :: 11:17
Печать  
(6)
36
  

1&&2&&3
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите с соединением
Ответ #8 - 01. Сентября 2014 :: 11:19
Печать  
trad писал(а) 01. Сентября 2014 :: 11:17:
(6)
36


Ну, я как обычно Улыбка)
  
Наверх
 
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: помогите с соединением
Ответ #9 - 01. Сентября 2014 :: 11:27
Печать  
Eprst писал(а) 01. Сентября 2014 :: 11:16:
Если фильтр по заявке, то просто

Код
Выбрать все
where left(РегРезервы.ЗаявкаПокупателя,4) = $ВидДокумента36.Нужный 



без всяких соединений с чем либо


блин, а я весь лоб разбил об эти джойны....
а почему условие:
left(РегРезервы.ЗаявкаПокупателя,4)=$ВидДокумента.ЕП_ПотребностиКлиента
возвращало ошибку?
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: помогите с соединением
Ответ #10 - 01. Сентября 2014 :: 13:08
Печать  
в таком случае полезно включать Отладка(1), смотреть на чистый текст запроса и в случае ошибок выполнять его через Enterprise manager
  
Наверх
 
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: помогите с соединением
Ответ #11 - 02. Сентября 2014 :: 01:32
Печать  
pavel_tr писал(а) 01. Сентября 2014 :: 13:08:
в таком случае полезно включать Отладка(1), смотреть на чистый текст запроса и в случае ошибок выполнять его через Enterprise manager


можно ссылку?
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: помогите с соединением
Ответ #12 - 02. Сентября 2014 :: 05:26
Печать  
pisarev писал(а) 02. Сентября 2014 :: 01:32:
pavel_tr писал(а) 01. Сентября 2014 :: 13:08:
в таком случае полезно включать Отладка(1), смотреть на чистый текст запроса и в случае ошибок выполнять его через Enterprise manager


можно ссылку?

вместо
ТЗРез=ODBCRecordset.ВыполнитьИнструкцию(Текст);


пишешь :
ODBCRecordset.Отладка(1);
ТЗРез=ODBCRecordset.ВыполнитьИнструкцию(Текст);
  
Наверх
 
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: помогите с соединением
Ответ #13 - 02. Сентября 2014 :: 10:02
Печать  
Улыбка да я не про отладку, я про Enterprise Manager....
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: помогите с соединением
Ответ #14 - 02. Сентября 2014 :: 13:14
Печать  
SQL Server Management Studio - правильное название. Он должен был быть установлен вместе с сервером. Ищите в "Пуске"
  
Наверх
 
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: помогите с соединением
Ответ #15 - 03. Сентября 2014 :: 02:13
Печать  
понял, спасибо!
  

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