13.09.2011, 11:38 | #21 |
Участник
|
Вы, наверное, с JoinMode() перепутали?
Но FetchMode() тоже надо будет настраивать, если есть другие датасорсы, подключенные к CustTable. А основная проблема с этим запросом - не может Аксапта обрабатывать большое количество вложенных подзапросов. Особенно, если они находятся на одном уровне вложенности
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: dn (1), Aquarius (1). |
13.09.2011, 11:45 | #22 |
Участник
|
Ну это легко проверить простым дополнительным запросом.
Цитата:
X++: void init() { super(); selectRangeRecords = this.query().dataSourceNo(1).addRange(fieldnum(TmpSysQuery, RangeStatus)); selectRangeRecords.value('!' + enum2str(RangeStatus::Hidden)); selectRangeRecords.status(RangeStatus::Locked); // <<-- } О! Здравая идея. А для оптимизации тогда ещё можно задать addSelectionField со значением SelectionField:atabase по какому-нибудь полю индекса |
|
13.09.2011, 11:55 | #23 |
Участник
|
Цитата:
qbds2.joinMode(JoinMode::innerJoin); qbds2.fetchMode(QueryFetchMode::One2One); Возможно. Но на практике, когда не проходил ExistJoin, вариант с InnerJoin проходил. Хотя согласен, что в общем случае это видимо не всегда будет работать. |
|
13.09.2011, 12:37 | #24 |
Участник
|
Цитата:
только в случае нескольких вложенных таблиц Аксапта возвращает записи ПОСЛЕДОВАТЕЛЬНО. я уже ссылку давал Цитата:
Сообщение от mazzy
вариант S.Kuskov: приджойнить exist join тоже не подойдет. поскольку в запросе уже может быть join. http://msdn.microsoft.com/en-us/libr...36(AX.10).aspx
|
|
13.09.2011, 13:07 | #25 |
Участник
|
|
|
13.09.2011, 13:36 | #26 |
Участник
|
хорошо соотносится.
проверьте. |
|
13.09.2011, 14:14 | #27 |
Участник
|
Цитата:
Цитата:
Проблема с "exists join" связана с тем, что если такой exists будет вставлен между двумя таблицами уже соеденёнными при помощи "inner join", то результирующий запрос получится не всегда ожиданным. Например, такой гипотетический код: Код: select Table1 exists join Table3 where Table3.id == Table1.id inner join Table2 where Table2.id == Table1.id Код: table1 where exists (select Table3 join table2) |
|
|
За это сообщение автора поблагодарили: dn (1). |
13.09.2011, 16:27 | #28 |
Участник
|
Такое поведение как раз задается fetchmode 1:n
Последний раз редактировалось dn; 13.09.2011 в 16:32. |
|
Теги |
query, как правильно |
|
Похожие темы | ||||
Тема | Ответов | |||
Очередной вопрос про Query | 45 | |||
Вопрос по query? | 1 | |||
Вопрос по query и join | 2 | |||
Вопрос по запросу (query) | 2 | |||
Вопрос знатокам QBE и Query в AXAPTA | 6 |
|