我有三张桌子
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
问题是我不知道正确的语法
您需要为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没有以正确的方式解决表之间的关系)