问题描述
- 在线急等!!!我在用jsp做一个宾馆管理系统,怎样才能按日期显示当前客房状态?拜托了!
-
在线急等!!!我在用jsp做一个宾馆管理系统,怎样才能按日期显示当前客房状态?拜托了!
解决方案
你的表结构设计就有问题, 考虑得太粗糙了。看着似乎是学生的作业。
你按我下面的代码来, 应该就可以了。
不过, 你还可以尽情发挥, 因为实际来说还有钟点房……
IF OBJECT_ID('room') IS NOT NULL
BEGIN
DROP TABLE room
END
GO
CREATE TABLE room(
rid INT PRIMARY KEY --房间号
,rName NVARCHAR(10) --房间名称
--,rstate INT --房间状态, 没有意义, 去掉
)
GO
IF OBJECT_ID('orde') IS NOT NULL
BEGIN
DROP TABLE orde
END
GO
CREATE TABLE orde(
oid INT PRIMARY KEY --订单号
,rid INT --房间号
,intime DATETIME --入住时间
,outtime DATETIME --退房时间 => days(入住天数)要去掉, 不合适
)
GO
SET NOCOUNT ON
--1. 插入测试数据
INSERT INTO room values(1,'牡丹房')
INSERT INTO room values(2,'芍药房')
--1号房间有客人预订 2015-05-18 10:00->05-19 11:59
INSERT INTO orde values(1,1,'2015-05-18 10:00','2015-05-19 11:59')
--查询2015-05-19 0:00-12:00 (上半天)之间可订房间
SELECT *
,CASE WHEN exists(
SELECT 1 FROM ORDE b WHERE
a.rid=b.rid
AND
(
intime BETWEEN '2015-05-19' AND '2015-05-19 12:00'
or outtime BETWEEN '2015-05-19' AND '2015-05-19 12:00'
)
) THEN '不可订' else '可订' end as rstate
FROM room a
/*
rid rName rstate
----------- ---------- ------
1 牡丹房 不可订
2 芍药房 可订
*/
--查询2015-05-19 12:00-23:59 (下半天)之间可订房间
SELECT *
,CASE WHEN exists(
SELECT 1 FROM ORDE b WHERE
a.rid=b.rid
AND
(
intime BETWEEN '2015-05-19 12:00' AND '2015-05-19 23:59'
or outtime BETWEEN '2015-05-19 12:00' AND '2015-05-19 23:59'
)
) THEN '不可订' else '可订' end as rstate
FROM room a
/*
rid rName rstate
----------- ---------- ------
1 牡丹房 可订
2 芍药房 可订
*/
解决方案二:
这都是你从数据库中查出来的啊,查完了,你就在前端显示就是了,显示样式根据美工效果图去做,数据接收可以用现在的很多模型去做,比如strust2,spring等
解决方案三:
这个要看你的数据表结构怎么定义的。
解决方案四:
补充一下:查询数据库时要用到room和orde(订单)两个表中的信息,room:rid(房间号),rstate(房间状态);orde:oid(订单号),rid(房间号),intime(入住时间),days(入住天数)。我想实现的是按日期动态显示客房信息,并且能按日期来预订客房
时间: 2024-11-03 03:00:44