我是新手,正在SQL
练习大学作业的查询...我在数据库中有三个表:
1.学生:
studentid pk
fname
school
2.书籍:
bookid pk
bookname
3.问题:
issueid pk
studentid fk
bookid fk
fine
我正在尝试解决此查询:
为已发行两本书或更多本书的学生选择bookname
和fine
。
我试过使用嵌套INNER JOIN
s作为:
SELECT fname,bookname,AVG(fine) FROM
student INNER JOIN ( books INNER JOIN issue ON books.bookid=issue.bookid) ON
student.studentid=issue.issueid
GROUP BY fname
HAVING COUNT(bookid)>1;
但是失败了。是否有任何错误或JOIN
如上所述完全嵌套s是完全错误的?或者,如果有另一种方法可以使用,请提示我JOIN
。
您可以执行两个单独的联接:
SELECT fname,bookname,AVG(fine)
FROM student
INNER JOIN issue ON student.studentid=issue.issueid
INNER JOIN books ON books.bookid=issue.bookid
GROUP BY fname
HAVING COUNT(bookid)>1;
另一种可能性是在同一表中的多个表上进行联接INNER JOIN
:
SELECT fname,bookname,AVG(fine)
FROM student
INNER JOIN (issue, books) ON (student.studentid=issue.issueid AND books.bookid=issue.bookid)
GROUP BY fname
HAVING COUNT(bookid)>1;
您的查询错误的原因仅仅是因为您没有使用正确的语法...:没有嵌套联接之类的东西。
该页面是用于联接的MySQL文档页面。您将找到许多有关如何处理联接的示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句