【发布时间】:2014-08-08 17:21:50
【问题描述】:
我希望有人可以在这里给我一些帮助......
我正在为一家酒店编写一个小预订程序,在那里我应该能够看到两个给定日期之间的可用房间列表。我遇到了一个问题,如果我搜索的到达日期晚于预订的到达日期,房间仍将显示为可用...
我对数据库的调用如下所示:
String SQLString = "select roomnumber, roomtypeid from rooms "
+ "where roomnumber not in "
+ "(select roomnumber from booking "
+ "where arrival between to_date(?, 'yyyy-mm-dd') "
+ "and to_date(?, 'yyyy-mm-dd')) and roomtypeid = ? order by roomnumber";
我尝试了一些不同的 sql 字符串组合,但没有任何帮助。谁能给我一个好的提示?
CREATE TABLE BOOKING(
ARRIVAL DATE ,
DEPARTURE DATE,
RESERVATIONSNUMBER INTEGER NOT NULL PRIMARY KEY,
ROOMNUMBER INTEGER,
PAID INTEGER,
CUSTOMERID INTEGER,
NUMBEROFGUESTS INTEGER,
CONSTRAINT BOFK FOREIGN KEY(ROOMNUMBER) REFERENCES ROOMS(ROOMNUMBER),
CONSTRAINT CUIDFK FOREIGN KEY(CUSTOMERID) REFERENCES CUSTOMER(CUSTOMERID));
【问题讨论】:
-
您能提供更多关于您的数据库的信息吗?预订表是如何定义的?
-
可以添加纯 SQL 吗?
-
我将添加预订表的sql。
-
确保您在 Java 代码中传递了正确的日期。验证后,检查子查询的结果 - 它是否包含您需要排除的房间?