// TableC1
Query query = new Query();
QueryBuildDataSource qbdsOne = query.addDataSource(tablenum(TableC1));
// TableC2
QueryBuildDataSource qbdsTableC2 = qbdsOne .addDataSource(tableNum(TableC2));
qbdsTableC2 .addLink(fieldNum(TableC1, B), fieldNum(TableC2, B));
// TableC3
QueryBuildDataSource qbdsTableC3 = qbdsTableC2 .addDataSource(tableNum(TableC3));
qbdsTableC3 .addLink(fieldNum(TableC2, B), fieldNum(qbdsTableC3 , B));
// TableA
QueryBuildDataSource qbds4 = qbdsTableC3 .addDataSource(tablenum(TableA a));
qbds4 .joinMode(JoinMode::OuterJoin);
// TableC1
qbds4 .addLink(fieldNum(TableC1, C1), fieldNum(TableA , field1), qbdsTableC1.name());
// TableC1
qbds4 .addLink(fieldNum(TableC1, C1), fieldNum(TableA , field2), qbdsTableC1.name());
// TableC2
qbds4 .addLink(fieldNum(TableC2, C2), fieldNum(TableA , field1), qbdsTableC2.name());
TableC1 is Okey but TableC2 is error