在线急等!!!我在用jsp做一个宾馆管理系统,怎样才能按日期显示当前客房状态?拜托了!
4条回答 默认 最新
- 吉普赛的歌 2015-05-15 13:47关注
你的表结构设计就有问题, 考虑得太粗糙了。看着似乎是学生的作业。
你按我下面的代码来, 应该就可以了。
不过, 你还可以尽情发挥, 因为实际来说还有钟点房……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 芍药房 可订 */
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!