嗨,我正在创建一个数据库,允许用户预订餐厅。下面是我的数据库数据模型。
我的问题是,我有点困惑,我将如何检查表,可在给定的晚上。这家餐厅有15张桌子,每个晚上4个人一桌(团体可以是4-6个大的,超过4个人的团体将占据两张桌子)。
如何查询数据库以返回给定晚上可用的表。
谢谢。
编辑:
这就是我试过的。(有些是假的,因为我不太清楚怎么做)

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;

这将返回井空行,因为它正在检查表是否不存在。我不太确定我该怎么做数据位测试。

最佳答案

若要查找给定主题的“teme”“night”“日期”上没有表分配行的表行,您应该能够执行以下操作:

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
    )

用通俗英语说:
加入表分配、预订和主题之夜,只接受在给定日期(:the_date)的表。
放弃与上面的元组相关的表行(NOT IN)。
剩下的几排桌子晚上是免费的。

关于sql - Oracle数据库使用SQL检查预订,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9819749/

10-10 20:36
查看更多