提问者:小点点

如何创建由多个表[重复]生成的视图


我有三张桌子

Students (sid:integer, sname:string, age:integer) 
Courses (cid:integer, cname:integer, credits:integer) 
Grades(sid:integer, cid:integer, grade:string) 

我正在尝试创建一个视图,用他们的GPA列出班上最优秀的学生

到目前为止,我已经尝试了这个查询

CREATE VIEW TopStudents AS
SELECT Students.sid, Students.sname, AVG(Grades.grade) AS GPA
FROM Students, Grades
               INNER JOIN Grades ON Students.sid = Grades.sid
               INNER JOIN Grades ON Course.cid = Grades.cid
WHERE GPA >3.0

问题是我不知道正确的语法


共1个答案

匿名用户

您需要为select

    CREATE VIEW TopStudents AS
    SELECT Students.sid, Students.sname, AVG(Grades.grade) AS GPA
    FROM Grades
    INNER JOIN Students ON Student.cid = Grades.sid
    INNER JOIN Course  ON Course.id = Grades.cid

您的主表是Grades表,因为它与其他表相关。2
因此,在此表中,对每个表使用join,您需要正确的ON子句

(在您的代码中,您有几个错误的部分。。您将from子句与逗号分隔的表名和join混在一起。。您没有将两个表连接到课程表,而是在grades表上使用了两次join,但是这种sintax没有以正确的方式解决表之间的关系)