如果在mysql表中保留了RPOM_NUMBER,DATE_ARRIVAL和DATE_DEPARTED
如何找到今天所有可用的房间?
答案 0 :(得分:2)
Select RPOM_NUMBER where current_date() not between DATE_ARRIVAL and DATE_DEPARTED;
这可能会对你有所帮助。如果您可以提供包含一些数据的详细信息表结构,那么将给出正确的答案。
答案 1 :(得分:2)
检查特定时刻可用的房间:
select RPOM_NUMBER
from RESERVATIONS r
group by RPOM_NUMBER
having not exists (
select *
from RESERVATIONS
where
RPOM_NUMBER = r.RPOM_NUMBER and
now() between DATE_ARRIVAL and DATE_DEPARTED
)
检查在指定时间段内可用的房间(从 start_time 到 end_time ):
select RPOM_NUMBER
from RESERVATIONS r
group by RPOM_NUMBER
having not exists (
select *
from RESERVATIONS
where
RPOM_NUMBER = r.RPOM_NUMBER and
{start_time} <= DATE_DEPARTED and
{end_time} >= DATE_ARRIVAL
)
答案 2 :(得分:1)
SELECT RPOM_NUMBER
FROM RESERVATIONS
WHERE (CURRENT_DATE() < DATE_ARRIVAL) OR (CURRENT_DATE() > DATE_DEPARTED)
编辑:回答有关插入表格的评论
您可以将上面的查询放在子查询中,然后使用INNER JOIN进行INSERT 子查询数据集返回的。
!没有测试下面的查询,只是为了表明一个想法:
INSERT INTO RESERVATIONS
SELECT available.RPOM_NUMBER, CURRENT_DATE(), CURRENT_DATE()
FROM RESERVATIONS r
INNER JOIN
(SELECT RPOM_NUMBER
FROM RESERVATIONS
WHERE (CURRENT_DATE() < DATE_ARRIVAL) OR (CURRENT_DATE() > DATE_DEPARTED)
) available ON available.RPOM_NUMBER = r.RPOM_NUMBER
答案 3 :(得分:1)
SELECT RPOM_NUMBER
FROM RESERVATIONS
WHERE (DATE(NOW()) NOT BETWEEN DATE_ARRIVAL AND DATE_DEPARTED)
答案 4 :(得分:1)
您需要另一个表,可能名为rooms
,其中包含该信息。该表格中的一行可能包含room_number
,is_occupied
,is_reserved
,reservation_start_time
,reserved_for_how_long
,reserved_by_whom
等列。仅指房间的东西。
当你拥有reservations
(可以是一张好的,有用的桌子,顺便说一句)时,你很难判断一个房间是空的还是被占用的,部分是因为那里有没有关于客人是否实际出现并占据房间的栏目。
您可能还会考虑一个名为guests
的表,其中包含每个来宾的所有信息。
答案 5 :(得分:0)
你真的需要一个ROOMS
表来使这个数据库远程使用 - 还有一个RPOM_NUMBER(我假设它标识了一个单独的房间)。
如果您有这样的表格,那么此查询将立即免费提供RPOM_NUMBERS
SELECT RPOM_NUMBER FROM ROOMS WHERE RPOM_NUMBER NOT IN
(SELECT DISTINCT RPOM_NUMBER FROM RESERVATIONS WHERE
DATE_ARRIVAL < NOW() AND DATE_DEPARTED > NOW())
这会将一行插入RESERVATIONS
INSERT INTO RESERVATIONS (RPOM_NUMBER,DATE_ARRIVAL,DATE_DEPARTED) VALUES
(x, y, z)
(其中x
,y
和z
分别是RPOM_NUMBER
,DATE_ARRIVAL
和DATE_DEPARTED
这不允许特定的时间。您需要考虑何时希望房间显示为免费。 如果从出发时间起1分钟,它是免费的吗?还是正在清理?
这也假设预订将在插入时同时具有到达和离开日期。 您如何处理开放式住宿的客人?
这个SQL没有经过测试,也不确定它是否可以在mySQL中运行 - 但它会非常相似。