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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.09.2021, 10:01   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,431 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Условие where _common.recid == _common.recid равносильно условию where true или что тоже самое отсутствию условия. Если у вас в таблице (APMParameters) одна запись то она и выберется и вы не почувствуете разницы. На таблицах с несколькими записями такой запрос вернёт вам первую попавшуюся запись, а не обязательно ту с которой вы работали.
Старый 03.09.2021, 12:04   #2  
oleggy is offline
oleggy
Участник
 
260 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Условие where _common.recid == _common.recid равносильно условию where true или что тоже самое отсутствию условия. Если у вас в таблице (APMParameters) одна запись то она и выберется и вы не почувствуете разницы. На таблицах с несколькими записями такой запрос вернёт вам первую попавшуюся запись, а не обязательно ту с которой вы работали.
Странно, но
X++:
select table where true;
не меняет запись.
А этот меняет.
X++:
select table where table.recId == table.recId;
Вот сами проверьте:
X++:
Address address;
RecId recId = 5637314047;
;

select address where address.recId == recId;
	
select address where address.recId == address.recId; // тут меняется recId

//select address where true; // тут не меняется recId

if (recId != address.RecId)
info('меняется');
Старый 03.09.2021, 14:13   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,160 / 1289 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от oleggy Посмотреть сообщение
Странно, но ...
Ничего странного. Вообще оба запроса могут вернуть абсолютно любую запись случайным образом. Сегодня могут вернуть то, что было в первом запросе, завтра что-нибудь другое.
Оба запроса почти равнозначны. Просто в = true, скорее всего, вообще проигнорируется условие движком MS SQL (или Аксапты), второй что-нибудь попробует сравнить (а может и нет), но все равно для каждой записи таблицы условие выполняется.
В базе в таблице хранится "неупорядоченный кортеж", если прямо не сортировать в самом запросе, то порядок выборки неопределен.
Конечно, могут влиять кластерные индексы, кэшированные данные, фаза луны, расположение звезд. Но закладываться на то, что это постоянное влияние, не следует.
В итоге, обсуждение чисто теоретическое и пользы, немного, какие бы предположения не делались.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX2009 странный баг, в любой форме отображается только 1-я запись oleggy DAX: Администрирование 4 24.06.2021 21:30
Невозможно выбрать запись, ...База данных SQL обнаружила ошибку actNaturally DAX: Администрирование 4 11.12.2014 12:56
axforum blogs: Ошибка обновления Организации при установке UpdateRollup Blog bot DAX Blogs 0 11.04.2013 20:11
Не корректно сохраняет запись в inventTable Starling DAX: Программирование 8 31.03.2008 15:30
Ошибка при импорте демоданных (Axapta 3.0 CIS SP1) KocDm DAX: Администрирование 2 11.08.2005 12:04

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.