嗨,我正在创建一个数据库,允许用户预订餐厅。下面是我的数据库数据模型。
我的问题是,我对如何检查给定晚上有空桌感到有点困惑。餐厅每晚有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;这将返回well空行,因为它正在检查表是否存在。我不太确定我将如何做date bit测试。
发布于 2012-03-22 18:06:46
要查找在给定的THEMED_NIGHT.TEME_NIGHT_DATE上没有 TABLE_ALLOCATION行的表行,您应该能够这样做:
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
)简单地说:
NOT IN).发布于 2012-03-22 18:17:19
尝试:
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)注意:将只返回在相关日期的任何点都没有预订的表。
https://stackoverflow.com/questions/9819749
复制相似问题