Mysql 添加一个JOIN语句会更改前一个sum的值
我有一个查询,其中给出了正确的值 但是,当我添加一个左连接表时,结果会发生变化(我尝试了右连接和内连接,但结果相同),它就在这里 添加stockdata时,我在查询中遗漏了什么 共有3个表,分别是配料表、配料表和库存数据表 使用此查询时:Mysql 添加一个JOIN语句会更改前一个sum的值,mysql,Mysql,我有一个查询,其中给出了正确的值 但是,当我添加一个左连接表时,结果会发生变化(我尝试了右连接和内连接,但结果相同),它就在这里 添加stockdata时,我在查询中遗漏了什么 共有3个表,分别是配料表、配料表和库存数据表 使用此查询时: SELECT dm.nom,SUM(IF(dm.id=ig.matid AND ig.matcuisine= 3,ig.qty,0)) AS bisused FROM ingredient AS ig LEFT JOIN DefMatiere AS dm ON
SELECT dm.nom,SUM(IF(dm.id=ig.matid AND ig.matcuisine= 3,ig.qty,0)) AS bisused
FROM ingredient AS ig
LEFT JOIN DefMatiere AS dm ON ig.matid=dm.id AND ig.matcuisine=3
WHERE dm.id=ig.matid AND dm.type=1 GROUP BY dm.nom
我得到正确的总数
但是当我使用这个查询时
SELECT dm.nom,SUM(IF(dm.id=ig.matid AND ig.matcuisine= 3,ig.qty,0)) AS bisused,
SUM(DISTINCT IF(dm.id=sd.matid, sd.quantite,0)) AS bisbought
FROM ingredient AS ig
LEFT JOIN DefMatiere AS dm ON ig.matid=dm.id AND ig.matcuisine=3
LEFT JOIN StockData AS sd ON sd.matid=dm.id
WHERE dm.id=ig.matid AND dm.type=1 GROUP BY dm.nom
所用原料的总和是原来的两倍,其余的都是正确的请更新问题本身,以包括相关数据库存数据和原料是否可以加入一个值?是的,我得到所用原料和购买原料的总和。但是当我添加行(Stockdata的JOIN语句)时,使用的行的总和是原来的两倍。仅使用Defmatiere和配料(联接)时,没有问题检索到的数据是正确的。来自库存和配料的数据是交叉联接的,因为它们没有公共字段MatId是库存和配料中的公共字段,它不包含产品名称,但包含两个表中产品的id。我通过matid从DefMatiere检索产品名称