支付费用

时间:2012-02-24 17:11:02

标签: mysql

我的数据库中有四个表:

  • student:包含学生的ID和姓名等。
  • student_fee:包含 paid_date student_id fee_id ,其中包含对student和{{1>的引用表格
  • fee:包含 fee_id ,费用金额, fee_typeid (参考fee表格)
  • fee_type:包含 fee_typeid 和费用类型 - 入场费,每月学费,罚款,统一费用等。

如何显示已支付入场费的学生(或 fee_typeid 入学费)和尚未支付入学费的学生?

嗯..英语不是我的第一语言;)

1 个答案:

答案 0 :(得分:0)

SELECT * FROM student WHERE student_id IN
    (
        SELECT student_id FROM student_fee WHERE fee_id IN
            (
                 SELECT fee_id FROM fee WHERE fee_typeid=?
            )
    )

我相信这就是你所需要的。这是一种在不实际编写连接语法的情况下执行join的方法。

基本上,您选择的所有 fee_id 都属于您想要的类型。然后,您选择所有 student_id ,其中 fee_id 与您刚刚选择的那些匹配。最后,您提取有关 student_id 是您刚刚提取的ID之一的学生的所有信息。