数据库的问题(数据库原理与运用)

题目是:查询选修"西方经济学"且成绩比("西方经济学"的平均成绩)低的学生的学号,姓名给的正确答案是:SELECT student.学号,姓名 from student,course,schedule,gradewhere student.学号=grade.学号 and grade.课程id=schedule.课程id and course.课程

编号=schedule.课程编号and 课程名称="西方经济学" and 成绩<(SELECT avg(成绩) as平均成绩 from course,schedule,grade where grade.课程id=schedule.课程id and course.课程编号=schedule.课程编号and 课程名称="西方经济学" )我的答案是:SELECT student.姓名,学号 fromstudent,course,schedule,gradewhere student.学号=grade.学号 and grade.课程id=schedule.课程id and course.课程编号=schedule.课程编号 and 课程名称="西方经济学"group by 学号,姓名 having 成绩<avg(成绩)但是答案是错的,请问错在哪里了?

问题1——因为你关联了多张表,里面都有相同名称的字段名,你需要指定你去的字段名来自哪张表,需要在前面加上表名前缀,如:student.学号
问题2——having 成绩<avg(成绩),access不知道支不支持这个语句,即便支持,这个结果也是不对的,你这里的avg(成绩)是根据学号,姓名进行分组的,说白了就是每个人的平均成绩,而不是西方经济学的平均成绩
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-13
你的 学号字段在多个表中都存在。这种情况下,在查询的时候,你只要用到学号字段,就必须在学号前加表名前缀。

你的查询中有地方没有加前缀,导致SQL无法辨认你的 学号 指的到底是哪一个表中的学号。

比如:SELECT student.姓名,学号 这里就没有加
相似回答