表 1 - jos_addRabotyAndProstoyMain
| id | Marka | OtrabotanoMachine_hours|
| 8 | 90979 | 6 |
| 9 | 90979 | 11 |
| 10 | 90979 | 11 |
| 11 | 90979 | 11 |
| 12 | 90979 | 11 |
表 2 - jos_addRabotyAndProstoySecond
| id | Hours | id_fk|
| 13 | 2 | 8 |
| 14 | 2 | 9 |
| 15 | 3 | 9 |
| 16 | 3 | 9 |
| 17 | 4 | 10 |
| 18 | 2 | 10 |
| 19 | 2 | 11 |
| 20 | 3 | 12 |
我的内连接查询:
SELECT avto.Marka AS Marka,sum(main.OtrabotanoMachine_hours) as 'work hours', SUM(sec.Hours) as downtime
FROM
jos_addRabotyAndProstoyMain main
INNER JOIN avto ON main.Marka=avto.ID_Avto
INNER JOIN jos_addRabotyAndProstoySecond sec ON sec.id_fk = main.id
GROUP BY avto.Marka
我得到以下结果:
| Marka | work hours | downtime|
| Liebherr | 83 | 21 |
如您所见,“工作时间”列中的总和不正确(83 而不是 50),因为主表中的主键符合从表中的 1-3 个外键。
我想,什么在排
INNER JOIN jos_addRabotyAndProstoySecond sec ON sec.id_fk = main.id
需要一些过滤器。我不知道如何解决,请帮忙。
我想要这样的结果:
| Marka | work hours | downtime|
| Liebherr | 50 | 21 |
最佳答案
您可以通过按 id_fk
字段聚合 jos_addRabotyAndProstoySecond
表来修复您的查询。 jos_addRabotyAndProstoySecond
和 jos_addRabotyAndProstoyMain
之间的 JOIN
操作被转换为 1-1 join 并消除了重复项:
SELECT avto.Marka AS Marka,
sum(main.OtrabotanoMachine_hours) as 'work hours',
SUM(sec.Hours) as downtime
FROM jos_addRabotyAndProstoyMain main
INNER JOIN avto ON main.Marka=avto.ID_Avto
INNER JOIN (
SELECT id_fk, SUM(Hours) AS Hours
FROM jos_addRabotyAndProstoySecond
GROUP BY id_fk) sec ON sec.id_fk = main.id
GROUP BY avto.Marka
关于mysql - 内部连接不正确的总和(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36183823/