处理课程数据库

时间:2012-03-04 18:02:17

标签: mysql

好的,我有3张桌子:

  1. 学生
  2. Offered_subjects
  3. Enrollees_list
  4. 学生将包含学校学生的所有信息 Offered_subjects将包含学校提供的所有科目 Enrollees_list将包含有关学生注册的主题的所有信息,还将包含该主题的评论(通过或失败)。

    现在,offers_subjects中的主题包含具有先决条件的课程(即,在获得MySQL101资格之前,学生mas在DBMS101中有传递评论)

    先决条件的类别是:

    1. 学年
    2. 学期
    3. 主题
    4. 请注意,并非所有offers_subjects中列出的主题都具有其先决条件的所有类别。有些要求完成某个科目,有些要求学生必须在某个学年(即第3年),有些要求全部三个。

      该计划所需要的是显示所有符合选定科目资格的学生。

      假设:MySQL101具有第2年,​​第2个sem,DBMS101的先决条件

      我需要列出所有第二年,第二季的学生,并在DBMS101中发表评论。

      如果所有主题的先决条件都有相同的类别,我可以在where子句中添加相同的查询,这很容易,但我的问题是,并非所有subject_subjects中列出的主题都包含所有主题其先决条件的类别。

      我是MySQL的新手,现在让我感到困惑。

      我该怎么做?

1 个答案:

答案 0 :(得分:1)

我猜你在Offered_subjects表上有以下列:

  • Req_year
  • Req_semester
  • Req_subject

如果您的某个主题在此列中没有值,则可以忽略此列的此检查。类似的东西:

Select ... where (Subject.req_year is null OR Student.year >= Subject.req_year) ...

这样,如果它为空,则不会考虑所需的年份。

(注意:我现在还不完全确定语法,但这就是主意)。