嗨,我正在创建一个数据库,允许用户预订餐厅。下面是我的数据库数据模型。
我的问题是,我有点困惑,我将如何检查表,可在给定的晚上。这家餐厅有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/