mysql Left join在group by上返回错误的值

mysql Left join在group by上返回错误的值,mysql,left-join,Mysql,Left Join,我有问题,左加入组。我得到的净利率336.83,而实际只有25.91 SELECT L.EnquiryId,L.Levelcode, im.imcode, im.ItemName, im.ItemDescription, cs.conditionofsupply, rm.rawmaterial, L.Validity, ROUND(SUM(rmc.Netrate), 2), ROUND(SUM(cc.pc), 2) ,IFNULL (ROUND(SUM(Bc)),0) FROM level1 L

我有问题,左加入组。我得到的净利率336.83,而实际只有25.91

SELECT L.EnquiryId,L.Levelcode, im.imcode, im.ItemName, im.ItemDescription, cs.conditionofsupply, rm.rawmaterial, L.Validity, ROUND(SUM(rmc.Netrate), 2), ROUND(SUM(cc.pc), 2) ,IFNULL (ROUND(SUM(Bc)),0)
FROM level1 L
LEFT JOIN (SELECT imcode,ItemName,ItemDescription,csid FROM Itemmaster)im
    ON (im.imcode=L.imcode)
LEFT JOIN (SELECT Id,conditionofsupply FROM csmaster)cs
    ON (cs.id=im.csid)
LEFT JOIN (SELECT rmcode,rawmaterial FROM rawmaterialmaster)rm
    ON (rm.rmcode=L.rmcode)
LEFT JOIN (SELECT Netrate,ScrapWeight*ScrapRate,GrossRate,CostingId,EnquiryId FROM rawmaterialcosting)rmc
    ON (L.EnquiryId=rmc.EnquiryId)  
LEFT JOIN (SELECT Mutlipleunit*Rate AS pc,CostingId,EnquiryId FROM Conversioncosting)cc
    ON (L.EnquiryId=cc.EnquiryId)  
LEFT JOIN (SELECT Numbers*Rate AS Bc,CostingId,EnquiryId FROM Boughtoutcosting)bc
    ON (L.EnquiryId=bc.EnquiryId)  
WHERE L.EnquiryId=5
GROUP BY rmc.CostingId,cc.CostingId,bc.CostingId
ORDER BY L.ID ASC

这有什么问题,请帮助。

您应该确保select子句中的所有非聚合字段都包含在group by子句中。所以试试这个:

SELECT rmc.CostingId,cc.CostingId,bc.CostingId, ROUND(SUM(rmc.Netrate), 2), ROUND(SUM(cc.pc), 2) ,IFNULL (ROUND(SUM(Bc)),0)
FROM level1 L
LEFT JOIN (SELECT imcode,ItemName,ItemDescription,csid FROM Itemmaster) im
    ON (im.imcode=L.imcode)
LEFT JOIN (SELECT Id,conditionofsupply FROM csmaster) cs
    ON (cs.id=im.csid)
LEFT JOIN (SELECT rmcode,rawmaterial FROM rawmaterialmaster) rm
    ON (rm.rmcode=L.rmcode)
LEFT JOIN (SELECT Netrate,ScrapWeight*ScrapRate,GrossRate,CostingId,EnquiryId FROM rawmaterialcosting) rmc
    ON (L.EnquiryId=rmc.EnquiryId)  
LEFT JOIN (SELECT Mutlipleunit*Rate AS pc,CostingId,EnquiryId FROM Conversioncosting) cc
    ON (L.EnquiryId=cc.EnquiryId)  
LEFT JOIN (SELECT Numbers*Rate AS Bc,CostingId,EnquiryId FROM Boughtoutcosting) bc
    ON (L.EnquiryId=bc.EnquiryId)  
WHERE L.EnquiryId=5
GROUP BY rmc.CostingId,cc.CostingId,bc.CostingId
ORDER BY L.ID ASC

这看起来也是一个问题。在子查询库中求和以获得您的答复,我再次得到相同的336.83@cdaigaTry!子查询的别名和右括号之间没有空格。不,我没有得到所需的值我已经用代码解释了这个问题。如果要按
rmc.CostingId、cc.CostingId、bc.CostingId
进行分组,则它们应该是select中唯一未聚合的字段。再试一次。