если использовать подход создания подобных связей с нуля, то типа того:
PHP код:
Query query;
QueryRun queryRun;
QueryBuildDataSource qbds_table;
QueryBuildDataSource qbds_trans;
QueryBuildDataSource qbds_dim;
BOMCalcTable calcTable;
BOMCalcTrans calcTrans;
InventDim inventDim;
Real price;
;
query = new Query();
qbds_table = query.addDataSource(tableNum(BomCalcTable));
qbds_table.orderMode(OrderMode::GROUPBY);
qbds_table.addSortField(fieldnum(BomCalcTable, itemid));
qbds_trans = qbds_table.addDataSource(tableNum(BomCalcTrans));
qbds_trans.relations(true); // Включение связей между таблицами (Relations в Table)
qbds_trans.joinMode(JoinMode::INNERJOIN); // Тип связи
qbds_trans.fetchMode(0);
qbds_trans.orderMode(OrderMode::GROUPBY); // группировка
qbds_trans.addSelectionField(fieldnum(BomCalcTrans, consumptionConstant), SelectionField::SUM);
qbds_trans.addSelectionField(fieldnum(BomCalcTrans, consumptionVariable), SelectionField::SUM);
qbds_trans.addSortField(fieldnum(BomCalcTrans, key1));
......
qbds_trans.addSortField(fieldnum(BomCalcTrans, itemid));
qbds_trans.addRange(fieldnum(BomCalcTrans, CalcType)).value(queryValue(itemCalcType::Item));
qbds_dim= qbds_table.addDataSource(tableNum(inventDim));
qbds_dim.relations(true);
qbds_dim.joinMode(JoinMode::INNERJOIN);
qbds_dim.fetchMode(0);
queryRun = new QueryRun(query);
while (queryRun.next())
{
calcTable = queryRun.get(tableNum(BomCalcTable));
calcTrans = queryRun.get(tableNum(BomCalcTrans));
inventDim = queryRun.get(tableNum(inventDim));
price = calcTrans.consumptionConstant + calcTrans.consumptionVariable;
..................
}
}
Посмотри классы, например. LedgerBalance*. Там много интересного о Query.
А без программирования никак?