Java MySQLSyntaxErrorException用于在MySQL工作台上正常工作的join命令

Java MySQLSyntaxErrorException用于在MySQL工作台上正常工作的join命令,java,mysql,sql,jdbc,syntax-error,Java,Mysql,Sql,Jdbc,Syntax Error,我正在尝试执行上述代码段,但得到的MySQLSyntaxErrorException如下所示: String query = "select Books.BookId, Books.Title, Book_Loans.BranchId, count(Book_Loans.BookLoanId) as NoOfCopies from (Book_Loans join Books" + "on (Book_Loans.BookId = Books.BookId)) where Books.BookI

我正在尝试执行上述代码段,但得到的MySQLSyntaxErrorException如下所示:

String query = "select Books.BookId, Books.Title, Book_Loans.BranchId, count(Book_Loans.BookLoanId) as NoOfCopies from (Book_Loans join Books"
+ "on (Book_Loans.BookId = Books.BookId)) where Books.BookId = ? group by (Book_Loans.BranchId)";
        preparedStatement = connect.prepareStatement(query);
        preparedStatement.setLong(1, bookId);
        resultSet = preparedStatement.executeQuery();
        while(resultSet.next()) {
            System.out.println("BookId:"+resultSet.getLong(1)+"\nTitle:"+resultSet.getString(2)+"\nBranchId:"+resultSet.getLong(3)+"\nNoOfCopies:"+resultSet.getInt(4)+"\n");
与查询相关的表格如下所示: 书籍(BookId,作者姓名,标题,(出版商)名称) 帐面贷款(BookLoanId,过期,到期,分行,帐面ID,卡号)


我试图通过让用户输入branchId来显示从每个分支签出的图书的副本数。当我在MySQL workbench上运行查询时,查询运行正常,但在Eclipse上出现语法错误。

您在“books”和“on”之间缺少一个空格。加上它,你就可以了。

你在“books”和“on”之间缺少一个空格。添加它就可以了。

SQL查询不正确,您需要在Books和on之间添加一个空格。此外,不需要添加额外的括号

使用:


SQL查询不正确,您需要在Books和on之间添加一个空格。此外,不需要添加额外的括号

使用:


你的问题没有意义。你说的是按分支聚合,然后包括有关书籍的信息。在大多数数据库中,甚至在MySQL的最新版本中,这都会失败

您的查询应该更像这样:

String query = "select Books.BookId, Books.Title, Book_Loans.BranchId, count(Book_Loans.BookLoanId) as NoOfCopies from Book_Loans join Books on Book_Loans.BookId = Books.BookId where Books.BookId = ? group by Book_Loans.BranchId";
如果您想包含有关该书的信息,那么正确的方法是使用聚合函数或将列包含在
group by
中:

select bl.BranchId, count(*) as NumCopies
from Book_Loans bl join
     Books b
     on bl.BookId = b.BookId
where b.BookId = ? 
group by bl.BranchId;
请注意,表别名使查询更易于编写和读取


当然,一旦得到正确的查询,就需要在应用程序中正确地实现它,包括在查询行周围获得正确的间距。

您的查询没有意义。你说的是按分支聚合,然后包括有关书籍的信息。在大多数数据库中,甚至在MySQL的最新版本中,这都会失败

您的查询应该更像这样:

String query = "select Books.BookId, Books.Title, Book_Loans.BranchId, count(Book_Loans.BookLoanId) as NoOfCopies from Book_Loans join Books on Book_Loans.BookId = Books.BookId where Books.BookId = ? group by Book_Loans.BranchId";
如果您想包含有关该书的信息,那么正确的方法是使用聚合函数或将列包含在
group by
中:

select bl.BranchId, count(*) as NumCopies
from Book_Loans bl join
     Books b
     on bl.BookId = b.BookId
where b.BookId = ? 
group by bl.BranchId;
请注意,表别名使查询更易于编写和读取


当然,一旦查询正确,您就需要在应用程序中正确地实现它,包括在查询行周围正确地设置间距。

ohh yes!!非常感谢你。这么长时间都找不到这个哦是的!!非常感谢你。这么长时间都找不到这个