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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.05.2020, 11:36   #1  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Группировка по нескольким полям из разных таблиц
Здравствуйте.
Как 'перевести' запрос с группировкой на X++.
На SQL запрос вот такой
select t1.Field1, t2.Field1, count(*), max(t1.Name), max(t2.Name) from Table1 t1
inner join Table2 t2 on Table2.KeyField = Table1.KeyField
group by t1.Field1, t2.Field1

// что-то типа этого не работает
while select count(Field1), maxof(Name)
from Table1
group by Field1
join KeyField
from Table2
group by Field1
where Table1.KeyField == Table2.KeyField
Старый 15.05.2020, 12:28   #2  
Pandasama is offline
Pandasama
Участник
 
448 / 133 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
в 2012 такое работает:
X++:
while select CustGroup from custtable 
        group by CustGroup 
    join Voucher 
    from custTrans
         where custTrans.AccountNum == custtable.AccountNum
    join DueDate from custTransOpen 
         group by DueDate 
             where custTransOpen.RefRecId == custTrans.RecId
точно ли у вас в вашем варианте ошибка именно из-за группировок?

меня смущает то что у вас Field1 и в группировке и в count(Field1)

Последний раз редактировалось Pandasama; 15.05.2020 в 12:30.
Старый 15.05.2020, 12:38   #3  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Цитата:
Сообщение от Pandasama Посмотреть сообщение
в 2012 такое работает:
X++:
while select CustGroup from custtable 
        group by CustGroup 
    join Voucher 
    from custTrans
         where custTrans.AccountNum == custtable.AccountNum
    join DueDate from custTransOpen 
         group by DueDate 
             where custTransOpen.RefRecId == custTrans.RecId
точно ли у вас в вашем варианте ошибка именно из-за группировок?

меня смущает то что у вас Field1 и в группировке и в count(Field1)
ставлю group by... ошибка, комментирую, ошибки нет, аксапта 3.0
Старый 15.05.2020, 12:43   #4  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Посмотрите на фразу:
Цитата:
меня смущает то что у вас Field1 и в группировке и в count(Field1)
Одно поле так не получится держать и в группировке и в агрегате.
пробуйте count(RecId)
Старый 15.05.2020, 12:59   #5  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Посмотрите на фразу:

Одно поле так не получится держать и в группировке и в агрегате.
пробуйте count(RecId)
count(RecId) тоже пробовал,
оставлял в селекте даже только Field1 с одной группировкой, всё равно ошибка
while select Field1
from Table1
group by Field1
join KeyField
from Table2
where Table1.KeyField == Table2.KeyField
Старый 15.05.2020, 13:26   #6  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,486 / 408 (16) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
а текст ошибки-то какой?
__________________
С уважением,
Вячеслав
Старый 15.05.2020, 14:38   #7  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Цитата:
Сообщение от pitersky Посмотреть сообщение
а текст ошибки-то какой?
Job
static void Job666(Args _args)
{
TestTable1 testTable1;
TestTable2 testTable2;
;

while select Field1
from TestTable1
group by Field1
join KeyField
from TestTable2
where TestTable1.KeyField == TestTable2.KeyField
{
info("Test group by");
}

}
Миниатюры
Нажмите на изображение для увеличения
Название: ErrorGroupBy.jpg
Просмотров: 71
Размер:	45.4 Кб
ID:	12816  
Старый 15.05.2020, 15:21   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Metrofun Посмотреть сообщение
Здравствуйте.
Как 'перевести' запрос с группировкой на X++.
На SQL запрос вот такой
select t1.Field1, t2.Field1, count(*), max(t1.Name), max(t2.Name) from Table1 t1
inner join Table2 t2 on Table2.KeyField = Table1.KeyField
group by t1.Field1, t2.Field1
вот так
X++:
while select count(RecId), maxof(Name) from Table1
group by Field1
join maxof(Name) from Table2 
group by Field1
where Table2.KeyField == Table1.KeyField
{
    info(strfmt("%1, %2, %3, %4, %5", Table1.Field1, Table2.Field1, Table1.RecId, Table1.Name, Table2.Name));
}

Последний раз редактировалось S.Kuskov; 15.05.2020 в 15:35.
Старый 15.05.2020, 15:54   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
см также Полные предложения ORDER BY и GROUP BY
Старый 15.05.2020, 18:20   #10  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Ну, вроде бы сообщение читаемое и соответствует таким же ошибкам если написать что-то подобное на T-SQL.
Есть
X++:
join KeyField
но нет
X++:
group by KeyField
Это если, действительно нужно значение KeyField, иначе можно просто:
X++:
join TestTable2
или даже
X++:
join TableId from TestTable2 
group by TableId
PS: но какие-либо книжки по X++, все таки советую почитать.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
динамический X++ запрос range по нескольким полям dark_knight DAX: Программирование 5 17.02.2019 22:31
Как сделать в lookup поиск по нескольким полям Jurezzz DAX: Программирование 6 31.05.2013 10:45
Поля из разных таблиц в динамической Lookup-форме samolalex DAX: Программирование 8 06.06.2011 20:20
DAX 4.0 Чем обусловлено наличие двух разных таблиц CustTable и VendTable? Бигудь DAX: Функционал 40 02.03.2009 13:04
Выборка полей из разных таблиц oleg_e DAX: Программирование 2 09.10.2006 12:11
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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