我对 MySQL 比较陌生,并试图自学如何使用它,如果我没有使用正确的术语,我很抱歉......
我有 2 个表:学生和付款付款表有学生 ID、金额和类型(保证金、分期付款或维修)
我无法弄清楚如何获取所有债券支付总和的列,以及每个学生的所有分期付款总和的列,并显示所有有或没有付款的学生。
或者,如果您知道任何可以提供帮助的免费指南(我的预算为 0 美元),我们将不胜感激。谢谢
我对 MySQL 比较陌生,并试图自学如何使用它,如果我没有使用正确的术语,我很抱歉......
我有 2 个表:学生和付款付款表有学生 ID、金额和类型(保证金、分期付款或维修)
我无法弄清楚如何获取所有债券支付总和的列,以及每个学生的所有分期付款总和的列,并显示所有有或没有付款的学生。
或者,如果您知道任何可以提供帮助的免费指南(我的预算为 0 美元),我们将不胜感激。谢谢
由于您想要 all students
,即使它们在 中没有任何匹配项payments
,您也必须使用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 没有。这样做需要知道所有可能的值payments.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
我建议您查询如何获得所有债券付款和分期付款的总和。
Select student_id , sum(amount),Type from payments group by student_id,Type
要了解Mysql,请参考以下网站。