|
24.10.2005, 16:23 | #1 |
Участник
|
Почему при преобразовании запроса Аксапта добавляет скобки?
Например, есть запрос:
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 |
Участник
|
А сделать таблицу на сервере, выгружать в нее условия и джойнить ее с требуемой не подходит?
__________________
Axapta v.3.0 sp5 kr2 |
|
25.10.2005, 09:57 | #3 |
Участник
|
Если не ошибаюсь, то результат должен выглядеть так :
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 |
Участник
|
Суть уловил, но легче не стало
|
|
27.10.2005, 11:04 | #5 |
----------------
|
Делайте addRange несколько раз меньшими дозами
|
|
|
|