有4张表,student(sid(主键),sex),course(cid(主键),cname),exam(eid(主键),cid(外键),edate(考试日期),cnum(考试次数)),score(sid(外键),eid(外键),grade)(sid,eid)为主键检索学科数据,检索学生成绩,将检索结果保存到一张表中,每学科保留一个分数,如果存在补考成绩,只保存最新的补考成绩,过滤其他成绩,同时将补考成绩后面带*.
学生未参加考试的学科,保存null到grade中。
学生未参加考试的学科,保存null到grade中。
from exam0315 natural join course0315 cross join
student0315 left outer join score0315
on score0315.eid=exam0315.eid and score0315.sid=student0315.sid
order by cid,sid这个可以得到一张总表,但是就是不会对日期和分数处理
from exam natural join course cross join
student left outer join score
on score.eid=exam.eid and score.sid=student.sid
order by cid,sid
这个可以得到一张总表,但是就是不会对日期和分数处理
1。补考 是否就是 cnum 大于 1
2。取成绩 一般情况下 应该取最高分,而不会是最新
3。操作表 能不能说得具体一点个人意见。
student(sid(主键),sex),
course(cid(主键),cname),
exam(eid(主键),cid(外键),edate(考试日期),cnum(考试次数)), cnum check in(1,2,3)
score(sid(外键),eid(外键),grade,pass)(sid,eid)为主键 pass check in('合格','不合格','补考合格')检索学科数据,检索学生成绩,将检索结果保存到一张表中,每学科保留一个分数,如果存在补考成绩,只保存最新的补考成绩,过滤其他成绩。