餐厅餐桌预订:MySQL Select应显示一个餐桌及其预订的列表

时间:2015-06-08 15:53:47

标签: mysql

我现在对一个问题有点挣扎。我必须为餐厅预订节目。所以我有桌子和时间窗。并且用户可以在特定时间窗口中保留表格。现在我想要一个Select,它显示我从一个表中的所有时间窗口,并保留它是否保留。当不是时,细胞应该是空的。

我有这些表

tables
- table_id
- description

time-windows
- time-window_id
- fk_table_id
- starttime
- endtime

reservations
- reservation_id
- fk_time-window_id
- fk_user_id
- Date

user
- user_id
- name

结果应该是这样的列表:

time-window_id | table_id | start    |  end      | user_id   | username
2              |  1       | 08:00:00 |  08:30:00 | 55        | Tom
3              |  1       | 08:30:00 |  09:00:00 |           |
4              |  1       | 09:00:00 |  09:30:00 | 23        | Ben
5              |  1       | 09:30:00 |  10:00:00 |           |

通过正常连接,我只获得保留的连接,但我也不希望列出保留的时间窗口。

任何想法如何运作? 可能它非常简单,但我不知道这是如何工作的:(

P.S。:是的,时间窗是永久的(来自我的客户的条件)

1 个答案:

答案 0 :(得分:1)

我会稍微改变你的数据库设计:time-windows可以是一个只定义时间的静态表。然后在每个预留记录中指定table_id和time-window_id。通过这样的设计,您可以通过左键加入预订表来完成您想要的任务。

SELECT `tables`.*, `time-windows`.*, `reservations`.*
FROM `tables`
JOIN `time-windows`
LEFT JOIN `reservations` ON `reservations`.`table_id` = `tables`.`table_id`
AND `reservations`.`time_window_id` = `time-windows`.`time_window_id`
WHERE `tables`.`table_id`=?;