AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 25.02.2004, 08:49   #1  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Join Date: 28.05.2003
Location: в глуши
Как убрать /*+ First_Rows */
делаю следующую связку datasource'ов:
PHP Code:
    q = new Query();

    
qb q.addDataSourcetablenum(UserInfo));

    
qb qb.addDataSourcetablenum(UserGroupList));
    
qb.relationsfalse);
    
qb.addLinkfieldnum(UserGroupList,UserId), fieldnum(UserInfo,Id));
    
qb.joinModeJoinMode::ExistsJoin);

    
qb qb.addDataSourcetablenum(RDJournalUserGroup));
    
qb.relationsfalse);
    
qb.addLinkfieldnum(RDJournalUserGroup,UserGroupId), fieldnum(UserGroupList,GroupId));
    
qb.joinModeJoinMode::ExistsJoin);
    
qb.addRangefieldnum(RDJournalUserGroup,RDJournalNameId)).value(journalNameId);

    
this.query(q); 
То есть последовательно присоединяются два datasource'а с типом связи ExistsJoin. Axapta генерит запрос, где сразу после SELECT ставит /*+ FIRST_ROWS*/. Что портит мне всю выборку (первая запись просто множится на кол-во записей). Если /*+ FIRST_ROWS*/ убрать совсем или заменить на /*+ LAST_ROWS*/, то записи возвращаются так как и задумывалось.
База данных на Oracle.
Можно ли как-то программно избавиться от /*+ FIRST_ROWS*/ в query.
__________________
Дмитрий
Old 15.03.2004, 10:54   #2  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Join Date: 28.05.2003
Location: в глуши
А то же самое, написанное на базе с Microsoft SQL Server, работает нормально.
/*+ FIRST_ROWS*/ не добавляется и запрос корректно возвращает нужные записи.
Напрашивается вывод что под Oracle запросы с ExistJoin лучше не писать.
__________________
Дмитрий
Old 16.03.2004, 09:26   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Join Date: 13.01.2004
Blog Entries: 3
Попробуй объединить таблицы UserGroupList и RDJournalUserGroup по типу INNER JOIN. На конечный результат это не должно повлиять. Т.е. теоретически должно получится что-то вроде:

UserInfo EXISTS (UserGroupList INNER JOIN RDJournalUserGroup)

Если в Query более одного объединения отличного от INNER JOIN, то результат как правило получается непредсказуемый. Причем желательно это объединение подключать самым последним в цепочке DataSource.
Old 16.03.2004, 09:47   #4  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Join Date: 28.05.2003
Location: в глуши
Нет, не работает так.
Дело не в кол-ве Exists'ов, а в их наличии.
Возможно даже если связь Exists будет на втором месте после Inner ошибки подобного рода останутся.. Надо будет проверить.
__________________
Дмитрий
Old 16.03.2004, 14:13   #5  
Andrew Besedin is offline
Andrew Besedin
Участник
 
121 / 15 (1) ++
Join Date: 25.01.2002
Привет!
Для Oracle8 есть галка специальная в конфигурационной утилите (на закладке Oracle) - Special First Rows Fix. Вот она-то и убирает данный хинт.

А на MS SQL такой подсказки, конечно, нет - вот и не подставляется.

А лучше переписать запрос, по-моему...
__________________
С уважением,
Андрей Беседин
Old 16.03.2004, 14:38   #6  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Join Date: 28.05.2003
Location: в глуши
Да, если эту галочку выставить, то всё нормально работает.
Правда в этом случае FIRST_ROWS нигде не появится. Несколько жестоко.

Надо было просто покопаться в "Technical Information. Setting Up Oracle8".
А на самом деле я этот запрос уже давно переписал по-другому, без ExistsJoin'ов.
__________________
Дмитрий
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Как в PageFooter убрать линию подчеркивания?..... McCoy DAX: Программирование 1 21.05.2008 15:26
Как убрать lookupButton из форму програмно? Delfins DAX: Программирование 10 07.12.2006 10:49
Убрать системное меню... NetBus DAX: Администрирование 6 06.07.2006 13:22
Как убрать label-ы из отчёта? bagyr DAX: Программирование 2 27.06.2005 13:11
Как убрать окно с экрана ? Swetik DAX: Функционал 7 26.08.2004 17:49

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 08:32.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.