桌位预订系统中可用时段与可用设施的SQL查询开发需求
桌位预订系统中可用时段与可用设施的SQL查询开发需求
大家好,我正在开发一个简单的餐厅桌位预订系统,目前有两张核心数据表,先给大家说明下结构和现有测试数据:
数据表结构与测试数据
1. Facility(桌位信息表)
这张表存储桌位的基础信息,每个桌位有明确的营业时间限制:
| id | 桌位名称 | 营业时间开始 | 营业时间结束 |
|---|---|---|---|
| 1 | Table1 | 08:00 | 17:00 |
| 2 | Table2 | 08:00 | 17:00 |
| 3 | Table3 | 08:00 | 17:00 |
| 4 | Table4 | 08:00 | 17:00 |
2. Reservation(预订记录表)
这张表记录已有的预订信息,包含桌位ID、预订日期、开始时间和持续时长(分钟):
| id | 桌位ID | 预订日期 | 开始时间 | 持续时长(分钟) |
|---|---|---|---|---|
| 1 | 1 | 2024-01-05 | 09:00 | 90 |
| 2 | 2 | 2024-01-05 | 09:00 | 90 |
| 3 | 3 | 2024-01-05 | 09:00 | 90 |
| 4 | 4 | 2024-01-05 | 09:00 | 90 |
| 5 | 1 | 2024-01-05 | 14:00 | 60 |
| 6 | 2 | 2024-01-05 | 14:00 | 60 |
| 7 | 3 | 2024-01-05 | 14:00 | 60 |
| 8 | 4 | 2024-01-05 | 14:00 | 60 |
从现有数据能看到,2024-01-05当天所有桌位都在09:00被订了90分钟,14:00被订了60分钟。
我需要实现的两个SQL查询
1. 查询可用时段
- 输入:指定的预订日期和时长(时长只能是60、90或120分钟)
- 输出:所有符合条件的可用时段,要求时段必须是整点或者半点(比如08:00、08:30、09:00这类),而且整个时段必须完全在桌位的营业时间范围内。
2. 查询可用桌位
- 输入:基于第一个查询得到的指定日期、时段和时长
- 输出:在这个时段内完全没有被预订的所有桌位(可能一个都没有,也可能是部分或者全部)
我已经整理好了测试数据,希望能得到这两个查询的SQL实现思路或者具体代码,麻烦各位帮忙看看,非常感谢!
备注:内容来源于stack exchange,提问作者DavidKv
相关产品推荐
相关产品推荐

