mysql - 想要从餐桌上获得可用的预订时间
问题描述
我有 2 张桌子,其中有计时
第一张桌子
id time
1. 9:00
2. 10:00
3. 11:00
4. 12:00
5. 01:00
6. 02:00
7. 03:00
第二张桌子是我的预订表,用户在其中进行了预约
id start_time end_time
1. 9:00 10:00
2. 10:00 12:00
3. 02:00 03:00
我想获得留在第二张表中的可用时间假设从 12:00 到 01:00 的时间是免费的,所以我希望我的查询将选择可用的时间我需要为此使用 MySQL 查询,请告诉我一个查询这样做是因为我不知道我可以使用什么查询来获取可用的时间。您的帮助将不胜感激。谢谢
解决方案
DROP TABLE IF EXISTS `appointment`;
CREATE TABLE `appointment` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Start` datetime NOT NULL,
`End` datetime NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into appointment (`Start`,`End`) values ('2019-01-18 09:00:00','2019-01-18 10:00:00'),('2019-01-18 10:00:00','2019-01-18 12:00:00'),('2019-01-18 14:00:00','2019-01-18 15:00:00');
DROP TABLE IF EXISTS `mhc_common`.`schedule`;
CREATE TABLE `mhc_common`.`schedule` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Time` datetime NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into schedule (`Time`) values ('2019-01-18 09:00:00'),('2019-01-18 10:00:00'),('2019-01-18 11:00:00'),('2019-01-18 12:00:00'),('2019-01-18 13:00:00'),('2019-01-18 14:00:00'),('2019-01-18 15:00:00'),('2019-01-18 16:00:00');
试试这个来返回可用的时间
Select ID
, s.Time
From Schedule s
Left
Join
( SELECT Time
, if((`Time` >= `Start` and `Time` < `End`),'N','Y') NA
FROM appointment a
, schedule b
Having NA = 'N'
) a
On a.Time = s.Time
Where `NA` is Null;
推荐阅读
- odoo - 如何在qweb报告odoo的所有页面中显示表头
- c - C 中的 getch() 问题
- c# - 在不使用 Microsoft.AspNetCore.TestHost 中包含的 TestServer 的情况下运行 Kestrel 进行测试
- c++ - 如何正确使用精神的气属性?
- tensorflow - 带有 Tensorboard 的 Keras:未找到标量数据
- javascript - 如何访问当组件的某个状态为真时加载的 react native 中的元素?
- uwp - 通用 Windows 应用无法启动,“AppxDeploymentFailureBlue”
- c# - 无法访问主数据库的实体框架迁移
- java - 我的数据库应用程序已停止工作并且无法打开
- r - 无法将数据框导出到 xlsx 文件