| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			join таблиц с разным значением dataAreaId
			 
			
			Добрый день. 
		
		
		
		
		
		
		
	Помогите разобраться... Есть запись в table1 со значением dataAreaId == 1. Также есть поля RefRecId и RefCompanyId, ссылающиеся на запись в table2 со значением dataAreaId == 2. con - компании в которых нужно искать. Но... X++: select firstonly crosscompany :[con] table1 where table1.TTNId == TTNId && table1.dataAreaId == this.dataAreaId join table2 where table2.RecId == table1.RefRecId && table2.dataAreaId == table1.RefCompanyId; Сразу напишу что в запросе к базе почему-то дописывается table1.dataAreaId == table2.dataAreaId. Как этого избежать?  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: S.Kuskov (3). | |
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Сделайте по-старинке, без crossCompany: 
		
		
		
		
		
		
		
	X++: table1 = null; //нужно сбросить курсор, если до этого использовался с другой DataAreaId table2 = null; table1.company(this.dataAreaid); select firstonly table1 where table1.TTNId == TTNId; table2.company(table1.RefCompanyId); select firstonly table2 where table2.RecId == table1.RefRecId;  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Airat (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Прошу прощения, забыл написать про сортировку по table2. Таким образом, в моем случае по-старинке сделать наверно не получится. Ведь не факт, что  
		
		
		
		
		
		
		
	X++: select firstonly table1 where table1.TTNId == TTNId;  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Все равно придется сделать по-старинке. Только сначала записать промежуточные данные во временную таблицу, а потом уже сортировать по этой временной таблице, а не по table2.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У вас всегда на входе определен список из двух компаний? 
		
		
		
		
		
		
			Т.е. всегда определено, что table1.DataAreaId==1 и table2.DataAreaId == 2? 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Посмотрите тему связанные данные из разных компаний. Там разбирался подобный пример. 
		
		
		
		
		
		
			По-моему, в вашем случае подойдет только добавление третьей таблицы со связями (если делать одним запросом в БД) 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| Теги | 
| crosscompany, join, баг | 
| 
	
	 | 
	
		
  |