Цитата:
Сообщение от
Music
Вариант с двумя Link подряд пробовал
а они не должны быть "подряд" (если я правильно понял смысл этой фразы), так как относятся к разным datasource. Примерно так (пишу без проверки синтаксиса):
X++:
...
QueryBuildDataSource qbdsTable1,
qbdsTable2,
qbdsTable3;
qbdsTable1 = query.addDataSource(tablenum(Table1));
qbdsTable2 = qbdsTable1.addDataSource(tablenum(Table2));
qbdsTable2.joinMode(JoinMode::OuterJoin);
qbdsTable2.addLink(fieldNum(Table1, id1), fieldNum(Table2, id1));
qbdsTable3 = qbdsTable1.addDataSource(tablenum(Table3));
qbdsTable3.joinMode(JoinMode::OuterJoin);
qbdsTable3.addLink(fieldNum(Table1, id2), fieldNum(Table3, id2));
Пример актуален для простого случая, когда в Table1 есть два внешних ключа id1 и id2, и требуется просто выбрать все записи из Table1 и привязать к ним расширенную информацию (при ее наличии) из таблиц Table2 и Table3. Но вполне возможно, что это совсем не то, чего вы хотите добиться, так как исходный запрос приведен не полностью. Из-за чего непонятно, для чего присутствует условие "&&(Table1.id2 == Table3.id2)" в джойне между 1-й и 2-й таблицами...