mysql - 内连接如何嵌套?

标签 mysql sql database join

我是 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/

相关文章:

Java实体插入DB更改列类型

database - 团队城市 : How to define build and deployment steps for database objects

sql - MySQL优化语句

php - 变量 $mysqli->result 出现错误,我还没有访问该变量

MySQL 授予无效?

MYSQL 函数逐渐变慢

sql - 添加约束以防止 SQL 更新触发器中的重复项

mysql - 在 SQL 中返回每个组具有最大值的行,包括具有相同值的行

php - 我怎样才能使这个 SQL 查询最有效?

database - 如何禁用特定表(Oracle)的闪回查询日志记录?