10.04.2003, 17:20 | #1 |
Участник
|
outer join для трех таблиц
не идет следующий запрос:
while select itemId, qty from inventTrans join inventLocationId from inventDim where inventTrans.inventDimId == inventDim.InventDimId outer join voucher from inventTransPosting where inventTransPosting.voucher == inventTrans.voucher выдается сообщение "Невозможно выбрать запись в таблице 'Разноска складских проводок' ('InventTransPosting') Использован оператор объединения таблиц join, но выражение where не содержит связи между таблицами" хотя если убрать outer то все нормально. В чем тут дело? Пробовал по всякому ни хрена не работает как только с фразой Outer join связываются более трех таблиц. Может не правильно использую ? |
|
10.04.2003, 17:49 | #2 |
NavAx
|
Неправильно используешь. В аксапте join нескольких таблиц идёт последовательно. Т.е. 1 с 2-ой, 2-я с 3-ей.
Ну и ещё. "where inventTransPosting.voucher == inventTrans.voucher" Тебе не кажется, что inventTrans.voucher будет всегда пустой? "while select itemId, qty from inventTrans"
__________________
С уважением, Игорь Ласийчук. |
|
10.04.2003, 17:58 | #3 |
Участник
|
спасибо, и еще
Спасибо, на счет inventTransPosting. Voucher - я знаю - связь не полная (этоя я для примера чтобы не усложнять) но она не пустая. Тогда у меня еще не большой вопросец, как быть если требуется составить отчет с довольно сложной и большой обработкой (я начинающий программист в Ахсапте), очень не хочется перебирать записи в методе Fetch(), может как-то можно использовать SQL напрямую послав конанды на сервер и вернув выборку, или еще что.... Вообще как поступают в таких случаях? Какова практика построения отчетов которые должны перелопатить большие объемы информации и которые не получается построить используя Query или встроенный SQL? Заранее огромное спасибо!
|
|
10.04.2003, 18:11 | #4 |
NavAx
|
.
Цитата:
может как-то можно использовать SQL напрямую послав конанды на сервер и вернув выборку, или еще что....
В сложных отчётах обычно используются временные таблицы. Вначале вызывается класс, который забивает туда данные, ну а потом это дело передаётся в отчёт. Напрямую в отчёте расчёты делать не рекомендуется - в случае трёхзвенной структуры они будут исполнятся на клиенте а не на сервере... В качестве примера можно посмотреть класс PurchInvoiceLauncher_RU
__________________
С уважением, Игорь Ласийчук. |
|
29.04.2004, 15:42 | #5 |
Участник
|
Цитата:
Изначально опубликовано Garic
Неправильно используешь. В аксапте join нескольких таблиц идёт последовательно. Т.е. 1 с 2-ой, 2-я с 3-ей. |
|