Mysql 添加一个JOIN语句会更改前一个sum的值

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

我有一个查询,其中给出了正确的值

但是,当我添加一个左连接表时,结果会发生变化(我尝试了右连接和内连接,但结果相同),它就在这里

添加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 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检索产品名称