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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.09.2020, 16:21   #1  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
? Условие с outer join
Здравствуйте.
Axapta 3.0.
Нужна выборка из двух таблиц (объединение по полю Id).
В выборку должны попасть все записи из Table1 и связанные из Table2.
Использую объединение outer join.
Нужно ещё чтобы в выборки были записи по условию Table1.Field1 == 3 или Table2.Field1 == 3.
Пишу запрос
select Id, Field1 from Table1
outer join Id, Field1 from Table2
where Table2.Id == Table1.Id &&
(Table2.Field1 == 3 || Table1.Field1 == 3)
условие игнорируется
пишу так
select Id, Field1 from Table1
where Table1.Field1 == 3
outer join Id, Field1 from Table2
where Table2.Id == Table1.Id &&
Table2.Field1 == 3
выводятся записи только удовлетворяющие условию Table1.Field1 == 3
Старый 13.09.2020, 07:35   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
QueryRange и QueryFilter [AX2012]

Для тройки можно попробовать создать промежуточный View и фильтровать уже его

Последний раз редактировалось S.Kuskov; 13.09.2020 в 07:38.
Старый 13.09.2020, 15:32   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Напишите в синтаксисе Select-SQL какой запрос Вы в итоге хотите получить. Из Вашего описания непонятно, что Вам требуется и в чем проблема. И Вам постараются "перевести" его в синтаксис X++, если это возможно
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 13.09.2020, 15:54   #4  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,509 / 432 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
селектом такое вроде бы не сделать
попробуйте через кверю, так точно работает
__________________
С уважением,
Вячеслав
Старый 15.09.2020, 09:01   #5  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Напишите в синтаксисе Select-SQL какой запрос Вы в итоге хотите получить. Из Вашего описания непонятно, что Вам требуется и в чем проблема. И Вам постараются "перевести" его в синтаксис X++, если это возможно
select t1.Id, t1.Field1, t2.Field1 from Table1 as t1
left join Table2 as t2
on t1.Id = t2.Id
where (t1.Field1 = 3 or t2.Field1 = 3)
Старый 15.09.2020, 11:47   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Metrofun Посмотреть сообщение
select t1.Id, t1.Field1, t2.Field1 from Table1 as t1
left join Table2 as t2
on t1.Id = t2.Id
where (t1.Field1 = 3 or t2.Field1 = 3)

Я не уверен, что такой запрос может быть реализован в Axapta. По крайней мере в одном запросе. Outer Join при конвертации в синтаксис SQL всегда оформляется как подзапрос. Поэтому и возникают сложности, если необходимо фильтровать результат, а не записи в самом подзапросе

Однако если подойти чисто формально, то запрос можно разделить на два. Примерно так

X++:
// Сначала фильтр по t1.Field1
select t1.Id, t1.Field1, t2.Field1 
from Table1 as t1
left join Table2 as t2 on t1.Id = t2.Id
where t1.Field1 = 3

UNION

// Теперь фильтр по t2.Field1, но здесь уже нет смысла в Left Join
select t1.Id, t1.Field1, t2.Field1 
from Table1 as t1
inner join Table2 as t2 on t1.Id = t2.Id
where t2.Field1 = 3

Вот два последовательных запроса в Axapta сделать можно. Хотя, конечно, надо будет еще исключить возможные дубли, если в первый запрос уже попали записи, которые будут во втором. Ну, или в первом добавить фильтр на t2.Field1 <> 3
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Несколько outer join в запросе _scorp_ DAX: Программирование 2 11.04.2008 10:56
Данные в Grid из таблиц, связанных по Outer Join cherv DAX: Программирование 2 17.02.2007 01:36
2 и более OUTER JOIN к одному паренту Ronin DAX: Программирование 21 19.12.2005 13:42
Outer Join и группировка Jackal DAX: Программирование 0 26.05.2004 12:19
outer join для трех таблиц r25 DAX: Программирование 4 29.04.2004 15:42
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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