使用左连接时简单的MYSQL查询总和问题
我的挑战如下:我有一个非常简单的SQL查询,它从两个不同的表中获取值,包括SUM值。使用左连接时简单的MYSQL查询总和问题
表1(treatments
)如下:
MedicineDescription | InitAmount | Cost
Mybulen | 90 | 194
表2(treatmentrecords
)如下:
Treatment | AmountGiven
Mybulen | 60
我的SQL查询:
SELECT t.MedicineDescription
, SUM(t.initAMount) startAmount
, SUM(r.AmountGiven) endAmount
, SUM(t.Cost) tCost
FROM treatments t
LEFT
JOIN treatmentrecords r
ON r.Treatment = t.MedicineDescription
GROUP
BY MedicineDescription
和最后。结果:
MedicineDescription | StartAmount | EndAmount | tCost
Mybulen | 90 | 180.00 | 194
正如您可以看到开始金额和tcost计算完美,问题只是为EndAmount返回的SUM不正确。
任何想法将不胜感激!
您的查询的问题在Group
子句中,您根据第一个表中的字段进行分组。因此,你没有想要的结果形式在第二张桌子上。尝试此查询
SELECT t.MedicineDescription
, SUM(t.initAMount) startAmount
, r.sumAmountGiven endAmount
, SUM(t.Cost) tCost
FROM treatments t
INNER JOIN (
SELECT Treatment
, SUM(AmountGiven) AS sumAmountGiven
FROM treatmentrecords
GROUP BY Treatment
) AS r ON r.Treatment = t.MedicineDescription
GROUP BY MedicineDescription
在这里,我添加一个子查询中,我把它命名为r
按照你的旧名。此查询返回一个关系,该关系有两列:treatment
列和sum(AmountGiven)
。这里的总和根据treatment
列分组。之后,连接将和列添加到主查询中。
我会仔细研究这个答案,因为它以某种方式起作用。请,你能解释为什么精心加入? – Stiaanvm
我会在一分钟内添加一些信息 –
我无法复制此结果。请参阅https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry
添加一个计数(*)来显示选择找到的记录数量。 –
检查http://sqlfiddle.com/#!9/304ec4/1 – KMS