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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.05.2013, 15:55   #1  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
! Query для 3-х таблиц с группировкой.
Есть задача: построить отчёт на основании 3-х таблиц с определёнными условиями. Условия пока опустим. Нужно объединить 3 таблицы между собой с помощью query. Второй день бьюсь, как только не соединял - ничего не выходит.
Последняя версия такова:

X++:
Queryrun main_query(boolean _count_query = false)
{
    Query query   =      new Query();
    QueryBuildDataSource qbds_vendsplistjour,
                         qbds_vendsplisttrans,
                         qbds_vendinvoicetrans;
    QueryBuildRange      qbr;
    ;

    qbds_vendinvoicetrans  = query.addDataSource(tablenum(VendInvoiceTrans));
   qbds_vendinvoicetrans.addSelectionField(fieldnum(VendInvoiceTrans,Qty), SelectionField::Sum);
    qbds_vendinvoicetrans.orderMode(OrderMode::GroupBy);
    qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,ItemId));
    qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,InternalSp));
    qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,Qty));

    qbds_vendsplisttrans  = qbds_vendinvoicetrans.addDataSource(tablenum(VendSpListTrans));
    qbds_vendsplisttrans.addLink(fieldnum(VendInvoiceTrans,InternalSp),fieldnum(VendSpListTrans,InternalSp));

    qbds_vendsplistjour = qbds_vendsplisttrans.addDataSource(tablenum(VendSpListJour));
    qbds_vendsplistjour.relations(true);

    if (_count_query)
    {
        qbds_vendinvoicetrans.addSelectionField(fieldnum(VendInvoiceTrans,Recid),SelectionField::Count);
    }

    info(qbds_vendinvoicetrans.toString());
    return (new QueryRun(query));
}
Он выдаёт такой sql запрос:
X++:
SELECT FIRSTFAST SUM(Qty), COUNT(RecId) FROM VendInvoiceTrans GROUP BY VendInvoiceTrans.ItemId ASC, VendInvoiceTrans.InternalSp ASC, VendInvoiceTrans.Qty ASC JOIN FIRSTFAST * FROM VendSpListTrans WHERE VendInvoiceTrans.InternalSp = VendSpListTrans.InternalSp JOIN FIRSTFAST * FROM VendSpListJour WHERE VendSpListTrans.InternalSp = VendSpListJour.InternalSp
который я подправил, чтобы проверить в sqlms


X++:
SELECT  SUM(VendInvoiceTrans.Qty), COUNT(VendInvoiceTrans.RecId) 
FROM VendInvoiceTrans 

  JOIN  VendSpListTrans 
  on VendInvoiceTrans.InternalSp = VendSpListTrans.InternalSp 
  JOIN VendSpListJour
  on VendSpListTrans.InternalSp = VendSpListJour.InternalSp
--GROUP BY VendInvoiceTrans.ItemId ,
-- VendInvoiceTrans.InternalSp
В sqlms он отрабатывает и выдаёт результаты.

Прошу помочь или подтолкнуть в нужную сторону, куда копать. Спасибо заранее.

С уважением.



Нашёл на форуме в теме такую фразу

Цитата:
Сообщение от Wamr Посмотреть сообщение
В SQL при использовании GROUP BY нельзя получить данные, которые не входят в список агрегирующих полей (addSortField) или функций (SelectionField).
Так что Аксапта тут не виновата
Добавил нужные мне поля, которые хочу выбрать из данной таблицы - ничего(

Последний раз редактировалось user_ax; 24.05.2013 в 16:02.
Теги
group by, query, группировка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX 2012 Наследование таблиц. Краткое описание механизма sukhanchik DAX: Программирование 32 21.09.2018 17:56
emeadaxsupport: Calling the Query Service Blog bot DAX Blogs 0 18.02.2012 01:13
AIF: OData Query Service Blog bot DAX Blogs 0 24.08.2011 09:11
jinx: Dynamics AX – Query-Ranges und Filtereinstellungen des Benutzers Blog bot DAX auf Deutsch 0 04.02.2010 00:05
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 04.05.2009 14:05

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

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

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