Нет, там по другому. На сервер пойдет два запроса результаты которых будут объеденены на клиенте. Обратите внимание table1 там добавляется два раза. Т.е получится следующее
datasource1(table1) - datasource3(table1)
--------------------------------------
table1.itemid = table2.itemId - пусто
table1.itemid = table2.itemId - пусто
table1.itemid = table2.itemId - пусто
пусто - table1.itemid = table3.itemId
пусто - table1.itemid = table3.itemId
пусто - table1.itemid = table3.itemId
По поводу view я уже и сам понял, просто не учел про ExistsJoin
Тут есть замечание - необходимо не Table1.ItemId Exists(), а Table1.Itemid
IN. Как его задать - не предствляю себе.
Если задавать ExistsJoin, то получается
PHP код:
Q.addDataSource(tablenum(Table1), "t1");
Q.dataSourceTable(tablenum(Table1)).addDataSource(tablenum(View1), "v1");
Q.dataSourceTable(tablenum(View1)).joinMode(JoinMode::ExistsJoin);
Q.dataSourceTable(tablenum(View1)).addRange(fieldnum(view1, itemid1)).value("((v1.itemId1 == t1.itemId) || (v1.itemId2 == t1.itemId))");
Но тут, как не раз было замечено, встает вопрос производительности