0

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

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

我无法弄清楚如何获取所有债券支付总和的列,以及每个学生的所有分期付款总和的列,并显示所有有或没有付款的学生。

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

4

2 回答 2

2

由于您想要 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
于 2013-07-26T05:32:01.507 回答
0

我建议您查询如何获得所有债券付款和分期付款的总和。

Select student_id , sum(amount),Type from payments group by student_id,Type

要了解Mysql,请参考以下网站。

http://www.tutorialspoint.com/mysql/

http://www.w3schools.com/sql/

http://www.mysqltutorial.org/

于 2013-07-26T05:26:33.970 回答