| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Выборка записей
			 
			
			Аксапта 3.0 
		
		
		
		
		
		
		
	Вопрос может быть простой, но ... Есть таблицы А(Поле а_Id ), Б(Поле a_Id), С(Поле a_Id) Можно ли в одном запросе вернуть все записи таблицы А, записи которой по а_Id есть и в Б и в С ? Т.е. A.a_Id == Б.a_Id && A.a_Id == C.a_Id  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			можно
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 PHP код: 
	
			
	
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Подскажите, пожалуйста,   
		
		
		
		
		
		
		
	как к нижеприведенному добавить правильно таблицу С Query query = new Query(); QueryBuildDataSource qbd = query.addDataSource(tablenum(A)); qbd.addDataSource(tablenum(Б)); qbds.joinMode(JoinMode::InnerJoin); qbds.addLink(fieldNum(А, а_Id), fieldNum(Б, а_Id));  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Поправка  
		
		
		
		
		
		
		
	qbds.joinMode(JoinMode::ExistsJoin);  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 PHP код: 
	
			
	
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо, а в случае , если  
		
		
		
		
		
		
		
	a_Id - уникальный идентификатор в таблице А, какая то часть этих записей есть в Б, какая-то в С. Т.е. не всегда Б.а_id = C.a_Id ?  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Тогда добавляйте С как childDataSource не к Б, а к А 
		
		
		
		
		
		
			Собственно тут смысл какой. Если С - childDataSource для Б, получается выборка строк А с A_Id, содержащимися в Б И в С. Если С - childDataSource для А - выборка строк А с А_Id, содержащимися в Б ИЛИ в С. 
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Простите, но все равно не много не пойму  
		
		
		
		
		
		
		
	У меня и С , и Б - childDataSource для А . Вопрос , как откатиться к А (не к child), чтобы сделать связь с С ? На реалиях : Выбрать записи в InventDim (A), записи которых есть в PurchLine (Б) или SalesLine (С)  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Что бы не быть голословной : 
		
		
		
		
		
		
		
	QueryRun exportQueryRun; Query query = new Query(); QueryBuildDataSource qbDSb, qbDSc, qbd = query.addDataSource(tablenum(InventDim)); InventDim inv; qbDSb = qbd.addDataSource(tablenum(PurchLine)); qbDSb.addLink(fieldNum(InventDim, InventDimId), fieldNum(PurchLine, InventDimId)); qbDSb.joinMode(JoinMode::InnerJoin); qbDSb.fetchMode(1); qbDSc = qbd.addDataSource(tablenum(SalesLine)); qbDSc.addLink(fieldNum(InventDim, InventDimId), fieldNum(SalesLine, InventDimId)); qbDSc.joinMode(JoinMode::InnerJoin); qbDSc.fetchMode(1); exportQueryRun = new QueryRun(query); while (exportQueryRun.next()) { inv = exportQueryRun.get(tableNum(InventDim)); print inv.inventDimId; } Посмотрите, что получиться  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
			
			
			да, погорячился, извините
			 
			
			Вы хотите сказать, что вернулись не все записи?  
		
		
		
		
		
		
		
	![]() Цитата: 
	
		
			Можно ли в одном запросе вернуть все записи таблицы А, записи которой по а_Id есть и в Б и в С ?
		
	 
Ошибка fetchMode(0); Кстати, Вы уверены, что вам нужны именно аналитики строк заказов\закупок, а не проводок?  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			fetchMode(0), ИМХО, проблему не решит. Кстати, для какого DataSource поставить fetchMode(0)? 
		
		
		
		
		
		
			По-моему, дело в том, что в случае двух и более вложенных DataSource Axapta забивает на установленный JoinMode и выполняет OuterJoin. Swetik, вам могу посоветовать только дополнительную проверку после get: PHP код: 
	
			
	
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо всем,  
		
		
		
		
		
		
		
	после долгих мытарств, действительно всплыла таблица InventTrans , по которой немного проще (при связи с InventDim) , добыть InventDim по Закупкам и Заказам...  | 
| 
	
 | 
| 
	
	 | 
	
		
  |