首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle数据库使用SQL检查保留

Oracle数据库使用SQL检查保留
EN

Stack Overflow用户
提问于 2012-03-22 17:47:21
回答 2查看 856关注 0票数 1

嗨,我正在创建一个数据库,允许用户预订餐厅。下面是我的数据库数据模型。

我的问题是,我对如何检查给定晚上有空桌感到有点困惑。餐厅每晚有15张桌子,4人一桌(4-6人一桌,4人以上的人占两桌)。

我如何查询数据库以返回给定晚上可用的表。

谢谢。

编辑::

这就是我尝试过的。(其中一些是伪的,因为我不太确定该怎么做)

代码语言:javascript
复制
SELECT tables.table_id
FROM tables
LEFT JOIN table_allocation
ON tables.table_id = table_allocation.table_id
WHERE table_allocation.table_id is NULL;

这将返回well空行,因为它正在检查表是否存在。我不太确定我将如何做date bit测试。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-22 18:06:46

要查找在给定的THEMED_NIGHT.TEME_NIGHT_DATE上没有 TABLE_ALLOCATION行的表行,您应该能够这样做:

代码语言:javascript
复制
SELECT *
FROM TABLES
WHERE
    TABLE_ID NOT IN (
        SELECT TABLE_ALLOCATION.TABLE_ID
        FROM
            TABLE_ALLOCATION
            JOIN RESERVATION
                ON TABLE_ALLOCATION.RESERVATION_ID = RESERVATION.RESERVATION_ID
            JOIN THEMED_NIGHT
                ON RESERVATION.THEME_ID = THEMED_NIGHT.THEME_ID
        WHERE
            THEME_NIGHT_NAME = :the_date
    )

简单地说:

  • 连接TABLE_ALLOCATION、
    • 和THEMED_NIGHT,并只接受与(NOT IN).
    • Those表行上剩余的元组相关的给定日期的表行,这些表行在夜间是免费的。
票数 3
EN

Stack Overflow用户

发布于 2012-03-22 18:17:19

尝试:

代码语言:javascript
复制
SELECT tables.table_id
FROM tables t
WHERE NOT EXISTS
(SELECT NULL
 FROM table_allocation a
 JOIN reservation r 
   ON a.reservation_id = r.reservation_id and 
      r.`TIME` between :Date and :Date+1
 WHERE t.table_id = a.table_id)

注意:将只返回在相关日期的任何点都没有预订的表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9819749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档