我正在研究太空预订系统,并试图找出该空间是否适用于给定的日期范围。所以我有2张桌子 -
space_master
id space_address start_time end_time
space_availability
space_id days_of_week
注意 -
(a)start_time和end_time是MYSQL中的DATETIME字段
(b)days_of_week是星期日由1表示的数字,依此类推
(c)多天可以使用一个空格(以下示例)
space_master
id space_address start_time end_time
1 Florida 2012-03-18 10:21:00 2012-03-29 4:21:00
2 London 2012-04-21 09:00:00 2012-06-18 10:00:00
space_availability
space_id days_of_week
1 1
1 2
2 4
2 5
2 6
这意味着第一个空格(id为1)可在2012-03-18 10:21:00和2012-03-29 4:21:00之间使用,但仅限于周日和周一。现在我正在尝试编写一个函数,它将booking_start_time和booking_end_time(MYSQL中的所有DATETIME)作为输入,然后扫描可用的空间表并返回可用的预订。像这样的东西 -
getBooking(2012-03-19 10:21:00,2012-03-19 15:21:00) - 返回id为1的空格(截至2012年3月19日为星期一,因此可用)
getBooking(2012-03-19 10:21:00,2012-03-20 15:21:00) - 自3月20日起没有返回任何空间不可用的星期二。
知道怎么做吗?我是第一次尝试在一个查询中执行此操作。但这甚至可能吗?
编辑:sqlfiddle链接如下 -