У меня есть две таблицы. Давайте назовем их Table1 и Table2. Мне нужно создать в коде запрос, как.
Select * from Table1
exists join Table2 where
Table1.Key == Table2.Key &&
(Table1.A == '1' || Table2.C == '2')
Таким образом, чтобы перейти к коду я пытался:
Query q;
QueryBuildDataSource qbd;
QueryBuildDataSource ofQbds;
QueryBuildRange qbr;
str range;
Table1 test;
QueryRun qr;
q = new Query();
qbd = q.addDataSource(tableNum(Table1));
qbd .name('Table1');
ofQbds = qbd.addDataSource(tableNum(Table2));
ofQbds.name('Table2');
ofQbds.addLink(fieldNum(Table1, Key), fieldNum(Table2, Key));
ofQbds.joinMode(JoinMode::InnerJoin);
range = strFmt('%1.%2 == %3 OR %4.%5 == %6', qbd.name(), 'A', '1',
ofQbds.name(), 'C', '5');
info(range);
ofQbds.addRange(fieldName2id(tableNum(Table1 ), 'A')).value(range);
qr = new QueryRun(q);
while (qr.next())
{
test = qr.get(test.TableId);
info(test.A + ','+test.Key);
}
info('done');
Но условие или не работает должным образом. Например, если у меня есть значения
Table1
A,Key
1,1
2,2
3,3
Table2
C,Key
2,2
, я ожидал бы 2 результата из таблицы 1
1,1
2,2
, но я получаю только первый
Message
Table1.A == 1 OR Table2.C == 2
2,2
done
Я пробовал разные Режимы соединения и переключения || и ИЛИ, но ничего из того, что я пробовал, пока не работает.
Что мне нужно изменить, чтобы иметь возможность иметь условия в коде?