从一个表中选择所有行,并根据第三个表从第二个表中选择总和

时间:2019-06-29 13:39:41

标签: mysql sql

我在创建一个查询时遇到问题,该查询将向我显示一个表中的所有行以及另一个具有相同ID的表中的行总和。

我写了一个无效的查询,因为它跳过了空行。

SELECT g.name, sum(w.points), sum(w.points2) 
FROM groups g, works w, students s 
WHERE g.group_id=s.group_id AND w.student_id=s.student_id 
GROUP BY g.group_id;

我也尝试了LEFT JOIN,但我的查询有错误:

SELECT g.name, s.name, sum(w.points) points
FROM groups g 
    LEFT JOIN students s 
    ON s.group_id=g.group_id
    LEFT JOIN works w
    ON w.student_id=s.student_id
GROUP BY g.group_id;

Here fiddle

如果组中没有点,则根本不显示它,我希望显示所有组,即使总和为0。


示例表 Example tables
预期结果

Expected result

2 个答案:

答案 0 :(得分:2)

这在I run it时有效:

SELECT g.name, sum(w.points), sum(w.points2)
FROM groups g LEFT JOIN
     students s
     ON g.group_id = s.group_id LEFT JOIN
     works w
     ON w.student_id = s.student_id
GROUP BY g.group_id;

如果要零,请使用COALESCE()

SELECT g.name, COALESCE(sum(w.points), 0),
       COALESCE(sum(w.points2), 0)
FROM groups g LEFT JOIN
     students s
     ON g.group_id = s.group_id LEFT JOIN
     works w
     ON w.student_id = s.student_id
GROUP BY g.group_id;

答案 1 :(得分:0)

Class AppstoreTransition.CardPresentationController overrides the -traitCollection getter, which is not supported. If you're trying to override traits, you must use the appropriate API.
Could not cast value of type 'UINavigationController' (0x1049b1338) to 'AppstoreTransition.CardsViewController' (0x1049b1308).
2019-06-29 15:39:24.077448+0200 TechSpec[10118:1200941] Could not cast value of type 'UINavigationController' (0x1049b1338) to 'AppstoreTransition.CardsViewController' (0x1049b1308).

这也应该起作用

相关问题