我正在使用 PHP/MySQL 制作预订系统。
我希望能够选择一个月,选择预订时长,并找出该月内有多少给定时长可用(即未标记为已预订)。
我首先创建了一个天表,每一天都有一个字段指示它是否被保留,以及一个日期。这两个表是:
CREATE TABLE `day` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`booking` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `booking` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`start` date DEFAULT NULL,
`end` date DEFAULT NULL,
PRIMARY KEY (`id`)
)
到目前为止,我已经能够计算出一个月中有多少天没有被预订 - 但这并不一定告诉我是否连续 7 天:
SELECT
EXTRACT(YEAR FROM date) as year,
EXTRACT( MONTH FROM date) as month,
count(day.id)
FROM
day
WHERE booking IS NULL
GROUP BY year, month
在这一点上,我正在考虑加载给定月份的所有天数,并在 PHP 中遍历它们以弥补我的数字,但这似乎有点愚蠢和低效。有没有人建议我如何直接从 MySQL 中找到这些信息?