我是 SQL
新手,正在为我的大学作业练习查询...我的数据库中有三个表:
<强>1。学生:
studentid pk
fname
school
<强>2。书籍:
bookid pk
bookname
<强>3。问题:
issueid pk
studentid fk
bookid fk
fine
我正在尝试解决这个查询:
为已发行两本或更多图书的学生选择书名
和平均罚款
。
我尝试使用嵌套的INNER JOIN
作为:
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
完全错误?或者请提示我是否有其他方法可以使用 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;
您的查询错误的原因很简单,就是您没有使用正确的语法...:不存在嵌套连接之类的东西。
This page是 MySQL 连接的文档页面。您会发现许多有关如何处理连接的示例。
关于mysql - 内连接如何嵌套?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24839014/