|  01.09.2011, 16:03 | #1 | 
| Участник | Проблема с запросом 
			
			Добрый всем день!  Написал запрос: X++: select ForceNestedLoop sum(qty) from _inventtrans group by Itemid, InventDimId where _inventtrans.StatusReceipt == StatusReceipt::Ordered exists join _inventsum where _inventsum.ItemId == _inventtrans.ItemId && _inventsum.inventDimId == _inventtrans.InventDimId && _inventsum.Ordered != _inventtrans.Qty; Запрос не отрабатывает как надо. Куда копать? Спасибо. | 
|  | 
|  01.09.2011, 16:07 | #2 | 
| Участник | 
			
			зачем?
		 | 
|  | 
|  01.09.2011, 16:08 | #3 | 
| северный Будда | 
			
			я так полагаю, что в момент построения запроса _inventtrans.Qty ещё просто не посчитано. отсюда и проблема. сделайте селект без сравнения количества, а потом сравнивайте отобранное 
				__________________ С уважением, Вячеслав | 
|  | 
|  01.09.2011, 16:10 | #4 | 
| Участник | 
			
			если вам нужно найти расхождения между inventsum и inventtrans, то есть для этих целей класс inventSumReCalcItem
		 | 
|  | |
| За это сообщение автора поблагодарили: pitersky (1), Borsugg (1). | |
|  01.09.2011, 16:36 | #5 | 
| Участник | 
			
			Специфика SQL в аксапте такова, что сначала всегда выполняются все джойны, а только потом группировки. HAVING в аксапте тоже отсутствует. Поэтому единственная возможность здалать такую выбоорку через аксапту - это разбить ваш запрос на два вложенных. X++: while select ForceNestedLoop sum(qty) from _inventtrans group by Itemid, InventDimId where _inventtrans.StatusReceipt == StatusReceipt::Ordered { select firstonly Ordered from _inventsum where _inventsum.ItemId == _inventtrans.ItemId && _inventsum.inventDimId == _inventtrans.InventDimId; if(_inventsum.Ordered != _inventtrans.qty) info(_inventtrans.ItemId) } Последний раз редактировалось S.Kuskov; 01.09.2011 в 16:40. | 
|  | 
|  01.09.2011, 17:25 | #6 | 
| Участник | Цитата: Цитата: 
		
			Сообщение от ice
			
			 если вам нужно найти расхождения между inventsum и inventtrans, то есть для этих целей класс inventSumReCalcItem Цитата: X++: ForceNestedLoopПоследний раз редактировалось Borsugg; 01.09.2011 в 17:28. | 
|  | 
|  01.09.2011, 18:31 | #7 | 
| Участник | 
			
			Это же хинт. Хинт который меняет способ выполненя джойна в запросе (но не сам  запрос).  Хинты никогда не влияют на результирующую выборку - они влияют на способ её получения. SQL в Аксапте | 
|  | |
| За это сообщение автора поблагодарили: Borsugg (1). | |
|  22.11.2013, 15:17 | #8 | 
| Молодой, подающий надежды | Цитата: X++: static void QueryHavingExample(Args _args) { Query query; QueryBuildDataSource qbds; QueryHavingFilter havingFilter; QueryRun queryRun; CustTable custTable; query = new Query(); qbds = query.addDataSource(tableNum(CustTable)); qbds.addGroupByField(fieldNum(CustTable, CustGroup)); havingFilter = query.addHavingFilter(qbds, fieldStr(CustTable, RecId), AggregateFunction::Count); havingFilter.value('< 10'); queryRun = new QueryRun(query); while (queryRun.next()) { custTable = queryRun.get(tableNum(CustTable)); info(custTable.CustGroup); } info("done"); } Последний раз редактировалось pedrozzz; 22.11.2013 в 15:21. | 
|  | |
| За это сообщение автора поблагодарили: S.Kuskov (3). | |
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| Проблема с запросом | 7 | |||
| Проблема с SQL запросом | 15 | |||
| Проблема с запросом | 2 | |||
| Проблема с запросом | 7 | |||
| Проблема: русские шрифты в отчетах, формируемых на сервере. | 3 | |||
| 
 |