下面的行是错误的原因,但我无法明确指出错误所在。
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)
保留条目是准备好的语句所在的文件,将对您有所帮助。
您需要一个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 = ?;
我怀疑,除了修复语法错误之外,这是否还能做任何有用的事情。您应该问一个有关样本数据,所需结果和适当的数据库标签的问题。