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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.07.2007, 14:47   #1  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
Тернарный оператор в select
Кто-нить может подсказать как правильно пишется использование тернарного оператора в селекте - что-то типа такого :
X++:
 ... where InventDim.InventBatchId == (inventBatchId ? inventBatchId : false)
где-то я такое встречал.

Последний раз редактировалось novic; 10.07.2007 в 14:52.
Старый 10.07.2007, 14:50   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
посмотри макрос InventDimJoin
Старый 10.07.2007, 14:54   #3  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от novic Посмотреть сообщение
Кто-нить может подсказать как правильно пишется использование тернарного оператора в селекте - что-то типа такого :
X++:
InventDim.InventBatchId == (inventBatchId ? inventBatchId : false)
если использование тернарного оператора - не самоцель, то
X++:
(InventDim.InventBatchId == inventBatchId || !inventBatchId)
__________________
-ТСЯ или -ТЬСЯ ?
Старый 10.07.2007, 14:56   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Vadik Посмотреть сообщение
если использование тернарного оператора - не самоцель, то
X++:
(InventDim.InventBatchId == inventBatchId || !inventBatchId)
Кстати, возвращаясь к этой дискуссии - никто не проверил разницу производительности двух выражений.

X++:
(!inventBatchId || InventDim.InventBatchId == inventBatchId)
и

X++:
(InventDim.InventBatchId == inventBatchId || !inventBatchId)
Старый 10.07.2007, 15:46   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Кстати, возвращаясь к этой дискуссии - никто не проверил разницу производительности двух выражений
разницу производительности - за счет чего? запрос-то одинаковый сформируется
__________________
-ТСЯ или -ТЬСЯ ?
Старый 10.07.2007, 15:49   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну, возможно он более быстро распарситься, а может и еще чего.
за счет того, что если условие !inventBatchId = true, то второе условие уже не учитывается.
сам проверю, как руки дойдут.
Старый 10.07.2007, 18:21   #7  
aidsua is offline
aidsua
AX*****
Аватар для aidsua
 
106 / 40 (2) +++
Регистрация: 28.09.2005
Адрес: 2:463/Kyiv
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Ну, возможно он более быстро распарситься, а может и еще чего.
за счет того, что если условие !inventBatchId = true, то второе условие уже не учитывается.
сам проверю, как руки дойдут.
как по мне.. все зависит от того:
- какой объем базы
- помещается база полностью в ОЗУ
- запрос может отбирать настолько мало данных, что поиск будет происходить по индексу вместо полного перебора данных
- и т.д.
- и т.п.

поэтому, имхо, данные выборки будут реально показывать производительность на конкретном (не в блатном смысле ) сервере с его специфическими настройками.
Старый 10.07.2007, 19:13   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от aidsua Посмотреть сообщение
как по мне.. все зависит от того:
- какой объем базы
- помещается база полностью в ОЗУ
- запрос может отбирать настолько мало данных, что поиск будет происходить по индексу вместо полного перебора данных
- и т.д.
- и т.п.
коллеги, ну сформируйте же запрос и проверьте
при inventBatchId = ""
выражение
X++:
(InventDim.InventBatchId == inventBatchId || !inventBatchId)
пропадает из WHERE
т.е. запросы в случае
X++:
(!inventBatchId || InventDim.InventBatchId == inventBatchId)
и
X++:
(InventDim.InventBatchId == inventBatchId || !inventBatchId)
идентичны (или, как у нас пишут, эдентичны)
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: zemlyn (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
2 while select или join? _scorp_ DAX: Программирование 9 23.01.2009 16:02
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
gatesasbait: Reverse keyword on Select Statements Blog bot DAX Blogs 0 08.02.2008 00:10
Fred Shen: Always use recId to know if a select statement returns a record Blog bot DAX Blogs 0 28.10.2006 16:40
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43

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

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

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