我有一个返回时隙的 mysql 查询。我有一个名为timeslots 的表,其中包含starttimeb、endtimeb 和employeeb。Booked Starttime 和 endtime 字段从名为 schedule 的不同表中提取。问题是我只能分配由时隙表定义的约会。
例如,我希望 8:00 到 10:00、10:00 到 12:00、12:00 到 14:00、14:00 到 16:00 和 16:00 到 18:00 的时段不可用,如果有计划表中有 1 个计划项目,开始时间为 08:00,结束时间为 18:00。营业时间定义为 8:00 到 18:00,因此在此期间只有两个小时的时间段可用,并且预约的时间可能会超过时间段表中提供的 2 小时时间段,例如,如果8:00 至 12:00 已预订 我只希望 12:00 至 14:00、14:00 至 16:00 和 16:00 至 18:00 可用。或者,如果预订了 9:00 至 11:00,则只有 12:00 至 14:00、14:00 至 16:00 和 16:00 至 18:00 可用。
mysql_query( "SELECT *
FROM timeslots
LEFT OUTER JOIN
(SELECT
starttime
, endtime
, custno
, id
FROM schedule
WHERE schedule.date = '2012-12-14'
) AS a
ON a.starttime >= timeslots.starttimeb
AND a.endtime <= timeslots.endtimeb
AND a.custno = timeslots.custnob" );
上面的查询返回类似这样的内容...在我的应用程序中,如果 starttime 为空,则设置为可用时隙。
starttimeb endtimeb custnob starttime endtime custno id 08:00:00 10:00:00 迈克尔 W 斯隆 08:00:00 10:00:00 迈克尔 W 斯隆 15670 10:00:00 12:00:00 迈克尔 W 斯隆 NULL NULL NULL NULL 12:00:00 14:00:00 迈克尔 W 斯隆 NULL NULL NULL NULL 14:00:00 16:00:00 迈克尔 W 斯隆 14:00:00 16:00:00 迈克尔 W 斯隆 15673 16:00:00 18:00:00 迈克尔 W 斯隆 NULL NULL NULL NULL 08:00:00 10:00:00 James T Reesor 08:00:00 10:00:00 James T Reesor 15664 10:00:00 12:00:00 James T Reesor NULL NULL NULL NULL 12:00:00 14:00:00 James T Reesor NULL NULL NULL NULL 14:00:00 16:00:00 James T Reesor NULL NULL NULL NULL 16:00:00 18:00:00 James T Reesor 16:00:00 18:00:00 James T Reesor 15674 08:00:00 10:00:00 Carlton L. Pierce NULL NULL NULL NULL 10:00:00 12:00:00 Carlton L. Pierce NULL NULL NULL NULL 12:00:00 14:00:00 Carlton L. Pierce 12:00:00 14:00:00 Carlton L. Pierce 15671 14:00:00 16:00:00 Carlton L. Pierce NULL NULL NULL NULL 16:00:00 18:00:00 Carlton L. Pierce NULL NULL NULL NULL 08:00:00 10:00:00 Frankie D Aldridge NULL NULL NULL NULL 10:00:00 12:00:00 Frankie D Aldridge NULL NULL NULL NULL 12:00:00 14:00:00 Frankie D Aldridge NULL NULL NULL NULL 14:00:00 16:00:00 Frankie D Aldridge NULL NULL NULL NULL 16:00:00 18:00:00 Frankie D Aldridge NULL NULL NULL NULL 08:00:00 12:00:00 迈克尔 W 斯隆 08:00:00 10:00:00 迈克尔 W 斯隆 15670