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


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 12. Июня 2008
Сцепление двух выборок по полям с разными типами
07. Октября 2011 :: 17:06
Печать  
Всем привет. Делаю выборку из двух регистров остатков и сцепляю их по полю Клиент. Все бы хорошо, но в регистре ВзаиморасчетыПокупателей поле Клиент имеет тип Справочник, в другом регистре ВзаиморасчетыПоставщиков это поле имеет тип Справочник.Контрагенты. Конструктор запросов построил запрос, однако данные из первого подзапроса не сцепляются с данными из второго подзапроса:
Код
Выбрать все
ТекстЗапроса = "-- qryMaker:Отчет1.2011.10.07.12.30.34
		|SELECT Подзапрос.Клиент [Клиент $Справочник]
		|	, Подзапрос.ДолгОстаток
		|	, Подзапрос1.Клиент [Подзапрос1Клиент $Справочник.Контрагенты]
		|	, Подзапрос1.ДолгОстаток Подзапрос1ДолгОстаток
		|FROM (SELECT ВзаиморасчетыПокупателейОстатки.Клиент
		|			, ВзаиморасчетыПокупателейОстатки.ДолгОстаток
		|		FROM $РегистрОстатки.ВзаиморасчетыПокупателей(:КонДата ~,,
		|				(Фирма = $ПустойИд)
		|				AND (Клиент IN (SELECT val FROM #СписокКлиентов)),
		|				Клиент,
		|				Долг) AS ВзаиморасчетыПокупателейОстатки) AS Подзапрос
		|	LEFT OUTER JOIN (SELECT ВзаиморасчетыПоставщиковОстатки.Клиент
		|			, ВзаиморасчетыПоставщиковОстатки.ДолгОстаток
		|		FROM $РегистрОстатки.ВзаиморасчетыПоставщиков(:КонДата ~,,
		|				(Фирма = $ПустойИд)
		|				AND (Клиент IN (SELECT val FROM #СписокКлиентов)),
		|				Клиент,) AS ВзаиморасчетыПоставщиковОстатки) AS Подзапрос1 ON Подзапрос.Клиент = $ВидСправочника36.Контрагенты + Подзапрос1.Клиент
		|";
 


Пробовал разные варианты, как это сделать, однако к положительному результату не пришел. Прошу вашей помощи. Спасибо.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Сцепление двух выборок по полям с разными типами
Ответ #1 - 07. Октября 2011 :: 17:30
Печать  
Приводи клиентов из char(9)
к char(13)
Код
Выбрать все
$ВидСправочника36.Контрагенты + id_9_контрагента
 

 
и делаем join из измерения по другому регистру.

где контрагенты общий справочник во временную таблицу надо укладывать методом
УложитьСписокОбъектов13
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сцепление двух выборок по полям с разными типами
Ответ #2 - 07. Октября 2011 :: 19:19
Печать  
А вообще должны ??
У вас клиентосы и покупатели и поставщики одновременно ?

ЗЫ: заместо join, тебе нужно Union all, по логике, потом group by всего.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Сцепление двух выборок по полям с разными типами
Ответ #3 - 10. Октября 2011 :: 10:47
Печать  
Eprst писал(а) 07. Октября 2011 :: 19:19:
У вас клиентосы и покупатели и поставщики одновременно ?


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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Сцепление двух выборок по полям с разными типами
Ответ #4 - 10. Октября 2011 :: 11:05
Печать  
Это всё понятно, только один хрен, нужен юнион.
  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Сцепление двух выборок по полям с разными типами
Ответ #5 - 10. Октября 2011 :: 11:36
Печать  
полюбому юнион нужен, т.к. теряются данные о клиентах-поставщиках, данные о которых отсутствуют в регистре покупателей
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать