Показать сообщение отдельно
Старый 15.09.2020, 11:47   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 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
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...