使用Netbeans IDE / Derby的WHERE子句上的SQL语法错误

问题描述 投票:-1回答:1

下面的行是错误的原因,但我无法明确指出错误所在。

PreparedStatement stmt = connection.prepareStatement("SELECT (SEATS - RESERVATIONS) AS AVAIL FROM RESERVATIONS "
                + " CROSS JOIN (SELECT COUNT(FACULTY) WHERE FACULTY = ? AND DATE = ?) "
                + " WHERE SEATS = ?");

跟随错误,

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "WHERE" at line 1, column 93.
at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.ClientConnection.prepareStatement(Unknown Source)
at ReservationEntry.reserveRoom(ReservationEntry.java:30)

保留条目是准备好的语句所在的文件,将对您有所帮助。

java sql syntax where-clause derby
1个回答
1
投票

您需要一个FROM子句!一些数据库需要它们。可能是这样的:

SELECT (f.SEATS - r.RESERVATIONS) AS AVAIL
FROM RESERVATIONS R CROSS JOIN
     (SELECT COUNT(FACULTY) as SEATS
      FROM <table name goes here>
      WHERE FACULTY = ? AND DATE = ?
     ) F
WHERE SEATS = ?;

我怀疑,除了修复语法错误之外,这是否还能做任何有用的事情。您应该问一个有关样本数据,所需结果和适当的数据库标签的问题。

© www.soinside.com 2019 - 2024. All rights reserved.