首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于计算时隙的SQL过滤

基于计算时隙的SQL过滤
EN

Stack Overflow用户
提问于 2012-03-14 12:29:18
回答 1查看 259关注 0票数 2

我正在为我们的投影仪做一个简单的预订系统。

这是一个场景。每台投影仪可以将其可用性设置为全天的一刻钟段。也就是说,投影仪1在每天上午8:15-下午1:45到下午3:5-5:15之间可用(也可以更改为每天设置不同的可用性)。投影仪可以在一天中的任何时间段预订,只要它是可用的。因此,我在我的sql数据库中(使用我的asp.net mvc前端)进行了设置。

我的问题是,在这种情况下搜索的最佳方式是什么。例如,UserA走进来,说给我找本周五中午12点到3点之间可用的投影仪我正在努力编写一个有效的sql查询来过滤这一点。到目前为止,我最好的选择是撤回所有投影仪,然后程序化地计算出它们是否在这段时间内可用但没有预订。它是有效的,但效率低得令人难以置信。我偶然想到了使用由存储过程生成的临时表的想法,该临时表可以被过滤,但它并不完全在那里。

有没有人知道我该怎么做?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-14 12:38:18

我可能有一个名为ProjectorReservations的表,其中包含开始时间和结束时间(以及您可能关心的其他字段,即谁租用了投影仪)。

搜索投影仪将如下所示:

代码语言:javascript
复制
SELECT projectorName
FROM Projectors
WHERE NOT EXISTS 
   (SELECT 1 FROM ProjectorReservations
   WHERE Projectors.projectorName = ProjectorReservations.projectorName
   AND (ProjectorReservations.startTime < {end_time}
   OR ProjectorReservations.endTime > {start_time}))

这在很大程度上是为了确保在你想要的那个结束之前没有预订开始,反之亦然。显然,您需要相应地在字段中进行交换,但这应该会给您一个大概的概念

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9695952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档