返回两个日期之间任意可用性的“属性”

时间:2014-01-08 19:35:32

标签: mysql

我一直在搜索和试验这个2天,但我无法正常工作,我真的希望得到一些帮助。

cabin_id
name
active
start_day  (enum 'Saturday' or 'Sunday')

预订

booking_id
cabin_id
check_in   (date)
check_out  (date)
confirmed

到目前为止很简单。我应该注意到,机舱租金仅在1周内开始,而周或者从周六或周日开始。

我需要返回两个日期之间 ANY 可用性的所有'小屋',而不是像两个日期之间那样 ARE ,就像大多数预订系统的答案一样在这里见过。

到目前为止我的尝试:

SELECT c.cabin_id, c.name
FROM cabin c
WHERE (c.cabin_id NOT IN (
  SELECT b.cabin_id 
  FROM bookings b 
  WHERE (b.check_out >= '$date_from' && b.check_in <= '$date_to') OR 
        (b.check_out <= '$date_from' && b.check_in >= '$date_to')
  )
)
ORDER BY `c`.`order` ASC

这只显示两个日期之间没有预订的小木屋。

例如,我在2014年1月26日至2014年3月2日期间添加了预订,此查询不会显示1月,2月或3月的客舱,在1月和3月显示为它在那几个月仍有一些可用性。

我现在已经在一个循环中工作,似乎无法理解这一点。

修改 SQL摆弄表格和数据:http://sqlfiddle.com/#!2/e3c8f/3

0 个答案:

没有答案