24.05.2013, 15:55 | #1 |
Участник
|
Query для 3-х таблиц с группировкой.
Есть задача: построить отчёт на основании 3-х таблиц с определёнными условиями. Условия пока опустим. Нужно объединить 3 таблицы между собой с помощью query. Второй день бьюсь, как только не соединял - ничего не выходит.
Последняя версия такова: X++: Queryrun main_query(boolean _count_query = false) { Query query = new Query(); QueryBuildDataSource qbds_vendsplistjour, qbds_vendsplisttrans, qbds_vendinvoicetrans; QueryBuildRange qbr; ; qbds_vendinvoicetrans = query.addDataSource(tablenum(VendInvoiceTrans)); qbds_vendinvoicetrans.addSelectionField(fieldnum(VendInvoiceTrans,Qty), SelectionField::Sum); qbds_vendinvoicetrans.orderMode(OrderMode::GroupBy); qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,ItemId)); qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,InternalSp)); qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,Qty)); qbds_vendsplisttrans = qbds_vendinvoicetrans.addDataSource(tablenum(VendSpListTrans)); qbds_vendsplisttrans.addLink(fieldnum(VendInvoiceTrans,InternalSp),fieldnum(VendSpListTrans,InternalSp)); qbds_vendsplistjour = qbds_vendsplisttrans.addDataSource(tablenum(VendSpListJour)); qbds_vendsplistjour.relations(true); if (_count_query) { qbds_vendinvoicetrans.addSelectionField(fieldnum(VendInvoiceTrans,Recid),SelectionField::Count); } info(qbds_vendinvoicetrans.toString()); return (new QueryRun(query)); } X++: SELECT FIRSTFAST SUM(Qty), COUNT(RecId) FROM VendInvoiceTrans GROUP BY VendInvoiceTrans.ItemId ASC, VendInvoiceTrans.InternalSp ASC, VendInvoiceTrans.Qty ASC JOIN FIRSTFAST * FROM VendSpListTrans WHERE VendInvoiceTrans.InternalSp = VendSpListTrans.InternalSp JOIN FIRSTFAST * FROM VendSpListJour WHERE VendSpListTrans.InternalSp = VendSpListJour.InternalSp X++: SELECT SUM(VendInvoiceTrans.Qty), COUNT(VendInvoiceTrans.RecId) FROM VendInvoiceTrans JOIN VendSpListTrans on VendInvoiceTrans.InternalSp = VendSpListTrans.InternalSp JOIN VendSpListJour on VendSpListTrans.InternalSp = VendSpListJour.InternalSp --GROUP BY VendInvoiceTrans.ItemId , -- VendInvoiceTrans.InternalSp Прошу помочь или подтолкнуть в нужную сторону, куда копать. Спасибо заранее. С уважением. Нашёл на форуме в теме такую фразу Добавил нужные мне поля, которые хочу выбрать из данной таблицы - ничего( Последний раз редактировалось user_ax; 24.05.2013 в 16:02. |
|
Теги |
group by, query, группировка |
|
|