Hi!
I think you should InventItemGroupTable join to ReqItemTable, then InventTable join to InventItemGroupTable and, finally, EcoResProductTranslation join to InventTable:
//1
query.dataSourceTable(tableNum(ReqItemTable)).addSelectionField(fieldNum(ReqItemTable, ItemId));
qbds.fields().dynamic(NoYes::No); //.dynamic(false);
qbds.fields().clearFieldList();
qbds.fields().addField(fieldnum(ReqItemTable, ItemId));
qbds.addRange(fieldnum(ReqItemTable, MinInventOnhand)).value(queryValue(">0"));
qbds.addGroupByField(fieldNum(ReqItemTable, ItemId));
//2
qbds = qbds.addDataSource(tableNum(InventItemGroupItem));
qbds.fields().dynamic(NoYes::No);
qbds.clearDynalinks();
qbds.fields().clearFieldList();
qbds.addLink(fieldNum(ReqItemTable, ItemId), fieldNum(InventItemGroupItem, ItemId));
qbds.joinMode(JoinMode::InnerJoin);
//2
qbds = qbds.addDataSource(tableNum(InventTable));
qbds.fields().dynamic(NoYes::No);
qbds.fields().clearFieldList();
qbds.addLink(fieldNum(InventItemGroupItem, ItemId), fieldNum(InventTable, ItemId));
qbds.joinMode(JoinMode::InnerJoin);
//4
qbds = qbds.addDataSource(tableNum(EcoResProductTranslation));
qbds.fields().dynamic(NoYes::No); //.dynamic(false);
qbds.fields().clearFieldList();
qbds.addLink(fieldNum(InventTable, Product), fieldNum(EcoResProductTranslation, Product));
qbds.joinMode(JoinMode::InnerJoin);
qbds.fields().addField(fieldnum(EcoResProductTranslation, Name));
qbds.addGroupByField(fieldNum(EcoResProductTranslation, Name));