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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.10.2005, 16:23   #1  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
Почему при преобразовании запроса Аксапта добавляет скобки?
Например, есть запрос:
select table1
where table1.field1 == 1 || table1.field1 == 2 || table1.field1 == 3

К SQL Server'у (к Oracle не знаю, но подозреваю нечто похожее) идет уже такой запрос:
select * from table1
where (((table1.field1 = 1) or (table1.field1 = 2)) or table1.field1=3)

Ну вот что-то в этом духе. И еще там фильтрация компании, но не об этом речь.
Т.е. получаем кучу скобок просто на ровном месте, причем не просто скобок, а вложенных в друг друга.
SQL Server не очень-то любит вложенные условия, во всяком случае, как показали эксперименты, 200 вложенных условий уже не переваривает. Настройку на сервере, которая отвечала бы за это число, я не нашел, подозреваю что ее нет.
Оставив в стороне безусловно здравые рассуждения о способах корректного построения запросов, скажите мне как наложить на запрос 200 условий путем их перечисления?
Старый 24.10.2005, 16:40   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А сделать таблицу на сервере, выгружать в нее условия и джойнить ее с требуемой не подходит?
__________________
Axapta v.3.0 sp5 kr2
Старый 25.10.2005, 09:57   #3  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
Если не ошибаюсь, то результат должен выглядеть так :
select * from table1
where (table1.field1 = 1 or (table1.field1 = 2 or (table1.field1=3)))
т.е. начиная с начала до первой истины.
В запрос такого же вида SQL Server сам преобразует например такой запрос :
select * from table1
where table1.field1 in (1, 2, 3)
Можете проверить Профайлером.
Старый 26.10.2005, 09:19   #4  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
Суть уловил, но легче не стало
Старый 27.10.2005, 11:04   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Делайте addRange несколько раз меньшими дозами
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Каков процент внедрений "стандартной" поставки системы Аксапта? coolibin DAX: Прочие вопросы 17 10.02.2009 12:45
Почему Аксапта может зависать при использовании русских букв в штрихкоде? Logger DAX: Программирование 4 24.01.2008 10:12
Аксапта закрывается во время выполнения запроса Suhovic DAX: Программирование 4 03.12.2007 15:30
Почему Аксапта не "дружит" с другими приложениями? AKIS-Falcon DAX: Прочие вопросы 11 08.01.2005 04:59
Почему Аксапта пытается установить Microsoft Office и как это обойти. AOS DAX: Администрирование 12 24.10.2003 10:39
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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