SQLite选择有两个条件

时间:2016-01-09 20:15:14

标签: java sqlite

我正在建立一个酒店预订系统。 我的预订页面有一个Jcalendar选择日期和“显示可用房间”按钮。 选择日期并按下按钮时,表格应显示可用的房间。

按钮的代码是

SELECT * FROM RoomInfo WHERE (
    number NOT IN (
        SELECT roomNo FROM Booked
    ) AND "+reportDate+" NOT IN (
        SELECT date FROM Booked
    )
)

numberRoomInfo中的房间号,roomNo中的Booked

reportDate是yyyyMMdd格式的选择日期的TEXT字符串,date中的Booked也是yyyyMMdd格式。

作为一个例子

RoomInfo db
-------------
row   number

1     101
2     201
3     301

Booked db
-----------
row   roomNo   date
1     101      20160110

当选择日期20160110并且预期输出为201和301室时,但不返回任何内容。 选择日期20160111时,预期输出为101,201和301室,但返回的是201和301.

我的查询有什么问题?我是SQLite的新手,随时教我。 谢谢。

1 个答案:

答案 0 :(得分:0)

您的查询不正确。在您的查询中,第一个条件将自动排除所有房间,因为您从Booked表中选择了所有内容。您只想为指定的日期选择Booked个房间,因此请将日期限制移到第一个suquery中。

尝试以下方法:

"SELECT * FROM RoomInfo 
WHERE number NOT IN (
        SELECT roomNo FROM Booked WHERE date = "+reportDate+"
    )"