繁体   English   中英

查询酒店可用房间进行预订

[英]Query for available rooms in hotel for booking

我在以下 mysql 查询中遇到异常,请通过详细解决查询来帮助解决此问题。我从事酒店管理工作,因此我只想获取未预订或不在预订表中的房间。

我面临以下错误

mySql 异常是: MySQLSyntaxErrorException:您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行的“EXISTS (SELECT roomnumber FROM roombook WHERE Date(departure)<= Date('2020-03-26')”附近使用的正确语法**这里是编码导致错误

ResultSet rs=st.executeQuery("SELECT roomnumber, roomtype FROM roomtable where roomnumber NOT EXISTS (SELECT roomnumber FROM roombook WHERE Date(departure)<= Date('"+from_date+"')");

在上面的代码中 date(departure) 是预订特定房间的客户的出发日期,而 date(from_date) id 是检查可用性表单的输入框的输入值;

有两个表名如下

1) 房间表——包含房间的信息,如房间号、房间类型、设施、房间容量等

房间表结构或房间表中的列

身份证 | roomnumber |roomtype |no.ofbeds |room_capacity |设施 |basic_price |

2) roombook -- 包含有关预订详情的信息,例如客户姓名、房间类型、房间号、到达日期、出发日期等。

房间簿结构或房间簿中的列

id |客户姓名 |room_number |room_type |到达 |离开 |no.ofdays |no.ofadults |no.ofchild |no.ofPerson |total_price |

现在使用检查可用性我想获取客户未预订的房间(或不在房间预订表中的房间),因此我使用了上面的查询,这导致了 SQL 语法错误异常类型的异常,我是mysql 和 java 新手,这就是为什么我无法找到编写查询的正确方法

NOT EXIST 没有以列名作为前缀。 试试下面的(我还在最后添加了一个额外的“)”):

ResultSet rs=st.executeQuery("SELECT roomnumber, roomtype FROM roomtable where NOT EXISTS (SELECT roomnumber FROM roombook WHERE Date(departure)<= Date('"+from_date+"'))");

注意:您的代码可能存在允许 SQL 注入的安全漏洞,更喜欢使用带参数的准备好的语句而不是字符串连接。

MYSQL 存在: https : //www.mysqltutorial.org/mysql-exists/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM