??560 2015-05-15 12:37 采纳率: 63.6%
浏览 2389
已采纳

在线急等!!!我在用jsp做一个宾馆管理系统,怎样才能按日期显示当前客房状态?拜托了!

在线急等!!!我在用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           芍药房        可订
    */
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!