MySQL 查询 : How to join and group and I don't know what they're called

标签 mysql

我对 MySQL 比较陌生,并且尝试自学如何使用它,如果我没有使用正确的术语,我很抱歉......

我有 2 个表:学生和付款 付款表包含学生 ID、金额和类型(债券、分期付款或维修)

我无法弄清楚如何获得一个列用于显示所有债券付款的总和,另一个列用于显示每个学生的所有分期付款的总和,并显示所有已付款或未付款的学生。

或者,如果您知道任何可以提供帮助的免费好指南(我的预算是 0 美元),我们将不胜感激。 谢谢

最佳答案

由于您想要所有学生,即使他们在付款中没有任何匹配项,您也必须使用LEFT JOIN

select students.*, payments.type, SUM(payments.amount)
from students
left join payments on payments.student_id = students.id
group by students.id, payments.type

请注意,这会将不同的付款类型放在各自的行中。将它们转换为结果中的列称为旋转。一些数据库系统有内置的方法来执行此操作,但 MySQL 没有。这样做需要了解 payment.type 的所有可能值。

select students.*,
        SUM(IF(payments.type = 'Bond', payments.amount, 0)) Bond,
        SUM(IF(payments.type = 'Installment', payments.amount, 0)) Installment,
        SUM(IF(payments.type = 'Repair', payments.amount, 0)) Repair
from students
left join payments on payments.student_id = students.id
group by students.id

关于MySQL 查询 : How to join and group and I don't know what they're called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17873509/

相关文章:

php - 检查数据库中是否存在用户名

mysql - 在响应/更新中找到日期之间最长和最快的差异

mysql - SELECT 语句的 WHERE 子句中列名的通配符?

mysql - IF 存在则在 mysql 中更新

php - Laravel DB mysql 选择数组中列的位置?

mysql - 多个内部连接 ​​- MySQL

php - 无法上传 CodeIgniter 图像文件

有关约会的 SQL 查询

mysql - 如何登录 MySQL 并从命令行执行选择

mysql - 使用Sqoop/Hive,如何将外键信息与其他数据一起保存到HDFS?