【问题标题】:check availability of a room with SQL使用 SQL 检查房间的可用性
【发布时间】:2012-06-03 15:33:14
【问题描述】:

我想检查某个房间是否在开始日期和结束日期之间可用。我正在使用网络服务功能来做到这一点。此函数返回一个包含给定房间的所有预订的列表。如果此列表为空,则房间可用,否则不可用。要知道我有这个查询。但它总是会退还我所有的预订。

SELECT * FROM ARTICLES_RESERVERING res
INNER JOIN ARTICLES_ZAAL roo ON res.ZAALID = roo.ID 
WHERE roo.ID = @ZAALID
AND res.DATUM_BEGIN >= @DATUM_EINDE OR res.DATUM_EINDE <= @DATUM_BEGIN

有人可以帮忙吗?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    AND 的优先级高于OR

    将最后一行改为:

    AND (res.DATUM_BEGIN >= @DATUM_EINDE OR res.DATUM_EINDE <= @DATUM_BEGIN)
    

    【讨论】:

      【解决方案2】:
        SELECT * FROM ARTICLES_RESERVERING res
        INNER JOIN ARTICLES_ZAAL roo ON res.ZAALID = roo.ID 
        WHERE roo.ID = @ZAALID
        AND  @DATUM_EINDE between res.DATUM_BEGIN and res.DATUM_EINDE
      

      我宁愿使用这个查询,因为使用 OR 通常很昂贵。

      【讨论】:

      • 提高效率不是问题的一部分;也许这是一件好事,但你的答案是错误的。
      • @Argeman 很好的查询给出了想要的结果。就是这么问的。有多种方法可以更正查询
      • 哦,现在我明白了!对不起,我的错,我的评论完全错过了重点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 2019-07-16
      • 2016-08-12
      • 1970-01-01
      • 2016-07-25
      • 2023-03-23
      相关资源
      最近更新 更多