[英]inner join incorrect sum()
表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连接,并删除重复项:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.