Тема: Group by in query
Показать сообщение отдельно
Старый 29.08.2003, 17:29   #4  
Ser is offline
Ser
NavAx
 
99 / 14 (1) ++
Регистрация: 04.03.2002
Адрес: Москва
если использовать подход создания подобных связей с нуля, то типа того:

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(BomCalcTableitemid));

    
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(BomCalcTransconsumptionConstant), SelectionField::SUM);
    
qbds_trans.addSelectionField(fieldnum(BomCalcTransconsumptionVariable), SelectionField::SUM);
    
qbds_trans.addSortField(fieldnum(BomCalcTranskey1));
    ......
    
qbds_trans.addSortField(fieldnum(BomCalcTransitemid));
    
qbds_trans.addRange(fieldnum(BomCalcTransCalcType)).value(queryValue(itemCalcType::Item));

    
qbds_dimqbds_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.

А без программирования никак?
За это сообщение автора поблагодарили: ZornFire (1).