AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.02.2004, 08:49   #1  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Как убрать /*+ First_Rows */
делаю следующую связку datasource'ов:
PHP код:
    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.
__________________
Дмитрий
Старый 15.03.2004, 10:54   #2  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
А то же самое, написанное на базе с Microsoft SQL Server, работает нормально.
/*+ FIRST_ROWS*/ не добавляется и запрос корректно возвращает нужные записи.
Напрашивается вывод что под Oracle запросы с ExistJoin лучше не писать.
__________________
Дмитрий
Старый 16.03.2004, 09:26   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Попробуй объединить таблицы UserGroupList и RDJournalUserGroup по типу INNER JOIN. На конечный результат это не должно повлиять. Т.е. теоретически должно получится что-то вроде:

UserInfo EXISTS (UserGroupList INNER JOIN RDJournalUserGroup)

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как в 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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:36.