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. |
|