|  18.09.2007, 17:18 | #1 | 
| Постигающий |  запрос с 4 таблицами. Загадка с Join 
			
			Доброго времени суток.. есть у меня запрос подобный следущему X++: while select VendTrans where VendTrans.TransDate <= toDate && VendTrans.TransDate >= fromDate notexists join PaymentRequestLine where PaymentRequestLine.Voucher == VendTrans.Voucher join PaymentRequest where PaymentRequestLine.Code == PaymentRequest.Code && PaymentRequest.Status == "некий статус" X++: while select VendTrans where VendTrans.TransDate <= toDate && VendTrans.TransDate >= fromDate join RContractTable where RContractTable.RContractCode == VendTrans.RContractCode && RContractTable.CurOtdel == "0033"   | 
|  | 
|  18.09.2007, 17:30 | #2 | 
| Участник | 
			
			а так не получается? X++: while select VendTrans where VendTrans.TransDate <= toDate && VendTrans.TransDate >= fromDate join RContractTable where RContractTable.RContractCode == VendTrans.RContractCode && RContractTable.CurOtdel == "0033" notexists join PaymentRequestLine where PaymentRequestLine.Voucher == VendTrans.Voucher join PaymentRequest where PaymentRequestLine.Code == PaymentRequest.Code && PaymentRequest.Status == "некий статус" | 
|  | |
| За это сообщение автора поблагодарили: Андрей К. (1). | |
|  18.09.2007, 17:31 | #3 | 
| Member | 
			
			Попробуйте для начала notexists join опустить вниз.
		 
				__________________ С уважением, glibs® | 
|  | 
|  18.09.2007, 17:48 | #4 | 
| Участник | 
			
			Если первый кусок кода работает, то при опущении нотэкзиста он может начать работать по другому (последний иннерджоин вылезет из скобок
		 | 
|  | 
|  18.09.2007, 19:20 | #5 | 
| Постигающий | 
			
			Belugin, совершенно верно..В первом запросе иннер джойн относится к нотекзист джойну. Остается опробовать ваш вариант.
		 | 
|  | 
|  19.09.2007, 08:17 | #6 | 
| Постигающий | Цитата: 
		
			Сообщение от belugin
			   а так не получается? X++: while select VendTrans where VendTrans.TransDate <= toDate && VendTrans.TransDate >= fromDate join RContractTable where RContractTable.RContractCode == VendTrans.RContractCode && RContractTable.CurOtdel == "0033" notexists join PaymentRequestLine where PaymentRequestLine.Voucher == VendTrans.Voucher join PaymentRequest where PaymentRequestLine.Code == PaymentRequest.Code && PaymentRequest.Status == "некий статус" | 
|  | 
|  19.09.2007, 16:59 | #7 | 
| Участник | 
			
			Запрос составлен, а дальше открываем план исполнения и вперед на оптимизацию плана!
		 
				__________________ Дайте мне точку опоры, и я переверну земной шар (Архимед) | 
|  | 
|  19.09.2007, 17:12 | #8 | 
| Программатор | 
			
			Можно явно указать какие поля Вы хотите выбрать из таблиц. Это увеличит производительность. Попробовать с индекс хинтами.
		 Последний раз редактировалось Sada; 19.09.2007 в 17:23. | 
|  |