我正在建立一个酒店预订系统。 我的预订页面有一个Jcalendar选择日期和“显示可用房间”按钮。 选择日期并按下按钮时,表格应显示可用的房间。
按钮的代码是
SELECT * FROM RoomInfo WHERE (
number NOT IN (
SELECT roomNo FROM Booked
) AND "+reportDate+" NOT IN (
SELECT date FROM Booked
)
)
number
是RoomInfo
中的房间号,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的新手,随时教我。 谢谢。
答案 0 :(得分:0)
您的查询不正确。在您的查询中,第一个条件将自动排除所有房间,因为您从Booked
表中选择了所有内容。您只想为指定的日期选择Booked
个房间,因此请将日期限制移到第一个suquery中。
尝试以下方法:
"SELECT * FROM RoomInfo
WHERE number NOT IN (
SELECT roomNo FROM Booked WHERE date = "+reportDate+"
)"