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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.07.2010, 11:46   #1  
Roman N. Krivov is offline
Roman N. Krivov
Участник
 
25 / 11 (1) +
Регистрация: 04.05.2010
Адрес: Мир, Россия, Московская область
Цитата:
если честно, то по-моему, в коде полная фигня написана.
но разбираться ни сил, ни желания.
Плохо когда не пытаются разобраться.

Задание:
Нужно выбрать все открытые заказы у которых существует хотя бы одна строка с зарезервированным количеством != 0 И чтобы не делать каждый раз CustTable::Find() нужно при'join'ить CustTable

Цитата:
не понимает "два exists join".
Тут не "два exists join", а "inner join + exists join"
Цитата:
вкратце: не используйте exists join без необходимости. не надо с его помощью эмулировать left join.
А никто и не пытается эмулировать? Да и зачем, если left join и так хорошо работает?
Цитата:
здесь неоднократно говорилось о влиянии порядка условий в запросе на производительность.
В данном случае от перестановки условий запроса скорость не измениться
Код:
Но вам скорее всего нужно писать "!0"
Согласен, хотя зарезервированное кол-во всегда больше 0. Но во избежании проблем в будущем - исправил
Цитата:
В общем, сначала набросайте запрос мышкой в AOT.
Проверьте.
Уж потом, если захочется, ваяйте ваш код по созданию запроса и по закату солнца вручную.
Я "накидал" запрос в AOT'е и в результате получил:
Код:
SELECT * FROM SalesTable WHERE ((SalesStatus = Открыто))
В общем, не понимает он два join к одному datasource, как бы вы не старались
Старый 16.07.2010, 11:51   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Roman N. Krivov Посмотреть сообщение

В общем, не понимает он два join к одному datasource, как бы вы не старались
Вам выше написали, используйте QueryFetchMode::One2One

т.е.:
X++:
qbdsSalesTable = SysQuery::findOrCreateDatasource(query, tablenum(SalesTable));
qbdsSalesTable.fetchMode(QueryFetchMode::One2One);
    qbdsCustTable = SysQuery::findOrCreateDatasource(query, tablenum(CustTable), tablenum(SalesTable), false);
qbdsCustTable.fetchMode(QueryFetchMode::One2One);
    qbdsSalesLine = SysQuery::findOrCreateDatasource(query, tablenum(SalesLine), tablenum(SalesTable), false);
qbdsSalesLine.fetchMode(QueryFetchMode::One2One);
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 16.07.2010, 12:29   #3  
Roman N. Krivov is offline
Roman N. Krivov
Участник
 
25 / 11 (1) +
Регистрация: 04.05.2010
Адрес: Мир, Россия, Московская область
Цитата:
Сообщение от lev Посмотреть сообщение
Вам выше написали, используйте QueryFetchMode::One2One
Просто не сразу заметил. Браузер не обновил страницу. Пришлось перезаходить.
Вариант c QueryFetchMode::One2One работает
Старый 16.07.2010, 13:04   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Roman N. Krivov Посмотреть сообщение
Плохо когда не пытаются разобраться.
угу. не бывает плохих вопросов, бывают плохие ответы

Цитата:
Сообщение от Roman N. Krivov Посмотреть сообщение
И чтобы не делать каждый раз CustTable::Find() нужно при'join'ить CustTable
А это то зачем?
но если уж так хочется при'join'ить, то (см. ниже)

Цитата:
Сообщение от Roman N. Krivov Посмотреть сообщение
Я "накидал" запрос в AOT'е и в результате получил:
Код:
SELECT * FROM SalesTable WHERE ((SalesStatus = Открыто))
В общем, не понимает он два join к одному datasource, как бы вы не старались
а у меня получается. нисколько не старался.
Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 543
Размер:	51.3 Кб
ID:	5964
__________________
полезное на axForum, github, vk, coub.
Теги
join, query, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
Простой QueryRun не работает miklenew DAX: Программирование 13 20.01.2009 14:17
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
Воскрешение мумии ... или давно забытая история про два Outer Join Saber DAX: Программирование 3 28.11.2007 17:12
Глюки в Query с разными типами Join (в т.ч. NonExistsJoin) к одной таблице gl00mie DAX: Программирование 10 14.02.2007 13:22

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

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

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