gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:30:02 25 4
gpt4 key购买 nike

我在创建一个查询时遇到问题,该查询将显示一个表中的所有行以及具有相同 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

最佳答案

这在 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;

关于mysql - 从一个表中选择所有行,并根据第三个表从第二个表中选择总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56817994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com