Quantcast
Channel: Martin Dráb's Activities
Viewing all articles
Browse latest Browse all 17532

Query Group By not working as expected

$
0
0

I am trying to make a query for a lookup which selects all purchase orders that are either in Received Status or in BackOrder status with at list one packingslip not received using this query:

Query query = new Query();
QueryBuildDataSource qbds;
QueryBuildDataSource QbdsJoin;
QueryBuildDataSource QbdsJoin2;
QueryBuildDataSource QbdsJoin3;
// Instantiate sysTableLookup object using table which will provide the visible fields
SysTableLookup sysTableLookup = sysTableLookup::newParameters(tableNum(PurchTable), _formControl);


// Create the query.
qbds = query.addDataSource(tableNum(PurchTable));
Qbds.addSelectionField(fieldNum(PurchTable, PurchId));
Qbds.addSortField(fieldNum(PurchTable, PurchId));

qbds.addRange(fieldNum(PurchTable, PurchStatus)).value(queryValue(PurchStatus::Received));
qbds.addRange(fieldNum(PurchTable, PurchStatus)).value(queryValue(PurchStatus::Backorder));
qbds.addRange(fieldNum(PurchTable, OrderAccount)).value(ISCPContrasenasHeader.AccountNum);
qbds.orderMode(OrderMode::GroupBy);
qbds.addGroupByField(fieldNum(PurchTable, PurchId));

QbdsJoin = qbds.addDataSource(tableNum(VENDPACKINGSLIPJOUR));
QbdsJoin.addLink(fieldNum(VENDPACKINGSLIPJOUR, PurchId),fieldNum(PurchTable, PurchId));
QbdsJoin.addSortField(fieldNum(VENDPACKINGSLIPJOUR, PurchId));
QbdsJoin.addOrderByField(fieldnum(VENDPACKINGSLIPJOUR,PurchId));
QbdsJoin.orderMode(OrderMode::GroupBy);

QbdsJoin2 = QbdsJoin.addDataSource(tableNum(vendinvoiceinfoline));
QbdsJoin2.joinMode(JoinMode::NoExistsJoin);
QbdsJoin2.addLink(fieldNum(VENDPACKINGSLIPJOUR, PurchId),fieldNum(vendinvoiceinfoline, origpurchid));

QbdsJoin3 = QbdsJoin2.addDataSource(tableNum(vendInvoiceInfoSubLine));
QbdsJoin3.addLink(fieldNum(VENDPACKINGSLIPJOUR, PACKINGSLIPID),fieldNum(vendInvoiceInfoSubLine, DocumentId));
QbdsJoin3.addLink(fieldNum(vendInvoiceInfoSubLine, LineRefRecId),fieldNum(vendinvoiceinfoline, recid));

Witch resulted on a duplicate PurchId.

I even try reducing my query to this:

Query query = new Query();
QueryBuildDataSource qbds;
QueryBuildDataSource QbdsJoin;
// Instantiate sysTableLookup object using table which will provide the visible fields
SysTableLookup sysTableLookup = sysTableLookup::newParameters(tableNum(PurchTable), _formControl);


// Create the query.
qbds = query.addDataSource(tableNum(PurchTable));
Qbds.addSelectionField(fieldNum(PurchTable, PurchId));
//Qbds.addSelectionField(fieldNum(PurchTable, OrderAccount));

qbds.addRange(fieldNum(PurchTable, PurchStatus)).value(queryValue(PurchStatus::Received));
qbds.addRange(fieldNum(PurchTable, PurchStatus)).value(queryValue(PurchStatus::Backorder));
qbds.addRange(fieldNum(PurchTable, OrderAccount)).value(ISCPContrasenasHeader.AccountNum);


QbdsJoin = qbds.addDataSource(tableNum(VENDPACKINGSLIPJOUR));
QbdsJoin.addLink(fieldNum(VENDPACKINGSLIPJOUR, PurchId),fieldNum(PurchTable, PurchId));
QbdsJoin.addSortField(fieldNum(VENDPACKINGSLIPJOUR, PurchId));
QbdsJoin.addOrderByField(fieldnum(VENDPACKINGSLIPJOUR,PurchId));
QbdsJoin.orderMode(OrderMode::GroupBy);

Qbds.addSortField(fieldNum(PurchTable, PurchId));
Qbds.addOrderByField(fieldNum(PurchTable, PurchId));
Qbds.orderMode(OrderMode::GroupBy);


When debugging I get the query into this:

SELECT PurchId FROM PurchTable(PurchTable_1) GROUP BY PurchTable.PurchId, VendPackingSlipJour.PurchId WHERE ((PurchStatus = 2) OR (PurchStatus = 1)) AND ((OrderAccount = N'1118676')) JOIN * FROM VendPackingSlipJour(VendPackingSlipJour_1) ON PurchTable.PurchId = VendPackingSlipJour.PurchId

Witch also return a duplicated purchid. In my understanding this translates to this SQL Statement:

SELECT PurchTable.PurchId FROM PurchTable
JOIN VendPackingSlipJour ON PurchTable.PurchId = VendPackingSlipJour.PurchId
WHERE ((PurchStatus = 2) OR (PurchStatus = 1)) AND ((PurchTable.OrderAccount = N'1118676'))
GROUP BY PurchTable.PurchId, VendPackingSlipJour.PurchId

Witch correctly result in only one PurchId as I expected.

What could it be wrong?


Viewing all articles
Browse latest Browse all 17532

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>