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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2012, 13:02   #1  
Airat is offline
Airat
Участник
 
14 / 13 (1) ++
Регистрация: 28.07.2011
join таблиц с разным значением dataAreaId
Добрый день.
Помогите разобраться...
Есть запись в table1 со значением dataAreaId == 1. Также есть поля RefRecId и RefCompanyId, ссылающиеся на запись в table2 со значением dataAreaId == 2.
con - компании в которых нужно искать.
Но...
X++:
select firstonly crosscompany :[con] table1
    where   table1.TTNId == TTNId
        &&  table1.dataAreaId == this.dataAreaId
    join table2
        where   table2.RecId == table1.RefRecId
             &&  table2.dataAreaId == table1.RefCompanyId;
... не приносит ожидаемого результата.

Сразу напишу что в запросе к базе почему-то дописывается table1.dataAreaId == table2.dataAreaId. Как этого избежать?
За это сообщение автора поблагодарили: S.Kuskov (3).
Старый 12.12.2012, 13:49   #2  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Сделайте по-старинке, без crossCompany:
X++:
    table1 = null; //нужно сбросить курсор, если до этого использовался с другой DataAreaId
    table2 = null;
    table1.company(this.dataAreaid);
    select firstonly table1 where table1.TTNId == TTNId;
    table2.company(table1.RefCompanyId);
    select firstonly table2 where table2.RecId == table1.RefRecId;
За это сообщение автора поблагодарили: Airat (1).
Старый 12.12.2012, 14:31   #3  
Airat is offline
Airat
Участник
 
14 / 13 (1) ++
Регистрация: 28.07.2011
Прошу прощения, забыл написать про сортировку по table2. Таким образом, в моем случае по-старинке сделать наверно не получится. Ведь не факт, что
X++:
select firstonly table1 where table1.TTNId == TTNId;
будет действительно первой записью
Старый 12.12.2012, 15:17   #4  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Все равно придется сделать по-старинке. Только сначала записать промежуточные данные во временную таблицу, а потом уже сортировать по этой временной таблице, а не по table2.
Старый 12.12.2012, 15:34   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
У вас всегда на входе определен список из двух компаний?
Т.е. всегда определено, что table1.DataAreaId==1 и table2.DataAreaId == 2?
__________________
Axapta v.3.0 sp5 kr2
Старый 12.12.2012, 16:05   #6  
Airat is offline
Airat
Участник
 
14 / 13 (1) ++
Регистрация: 28.07.2011
Цитата:
Сообщение от AndyD Посмотреть сообщение
У вас всегда на входе определен список из двух компаний?
Т.е. всегда определено, что table1.DataAreaId==1 и table2.DataAreaId == 2?
нет количество компаний произвольное, по идее оно зависит от количества различных значений в table1.RefCompanyId
Старый 12.12.2012, 16:12   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Посмотрите тему связанные данные из разных компаний. Там разбирался подобный пример.

По-моему, в вашем случае подойдет только добавление третьей таблицы со связями (если делать одним запросом в БД)
__________________
Axapta v.3.0 sp5 kr2
Теги
crosscompany, join, баг

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX 2012 Наследование таблиц. Краткое описание механизма sukhanchik DAX: Программирование 32 21.09.2018 17:56
Порядок выполнения GroupBy и Exists Join для временных таблиц S.Kuskov DAX: Программирование 6 06.12.2012 16:55
Join трех таблиц (две к одной) ATimTim DAX: Программирование 25 03.02.2005 11:31
Есть у кого ни будь Job ик для групповой замены поля dataareaid в группе таблиц ShadowFromXZone DAX: Функционал 7 13.10.2004 12:48
outer join для трех таблиц r25 DAX: Программирование 4 29.04.2004 15:42

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

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

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