加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – 在预订体系中查找空闲插槽

发布时间:2021-01-25 06:08:24 所属栏目:编程 来源:网络整理
导读:在 my question about searching for date ranges我实行简化题目,有时中提出了一个差异的更简朴的题目. 而不是通过编辑使该题目伟大化,我将问我现实想要的题目. 我有两个表属性和预订.预订具有属性的外键以及开始和竣事日期. 用户正在搜刮空闲插槽并以天为单

在 my question about searching for date ranges我实行简化题目,有时中提出了一个差异的更简朴的题目.

而不是通过编辑使该题目伟大化,我将问我现实想要的题目.

我有两个表属性和预订.预订具有属性的外键以及开始和竣事日期.

用户正在搜刮空闲插槽并以天为单元提供所需的一连时刻.他们还提供他们感乐趣的一系列开始日期.因此,搜刮将按以下方法搜刮:
“找到我全部的房产,我想要一个3天的时刻段,从5月开始.”

此刻我可以这样做:
1.为每个隐藏的开始日运行31个查询
2.查找5月份的全部预订,将它们压缩成一个31个布尔值的数组,代表天数并轮回查找插槽.

我以为(2)在大大都环境下更有用.有没有更好的算法?是否有纯SQL办理方案.

我将行使Django,我的数据集很小,以是我也许会对’哑’的approuch感想满足,但我很想知道最好的算法是什么样的.

办理要领

对您的应用措施也许有点过度 – 可是:

以“写入”进程变得更伟大为价钱来改造搜刮的一种相对简朴的要领是变动??Booking表以使其成为“可用性”表.

添加一个布尔列以指示插槽是空闲照旧已预订(可能更好地保存在预订它的客户的ID中,假如插槽空闲则行使0).

从2009年1月1日开始行使一个免费插槽 – > 12月31日?

当您预订时,将空闲时段分为3个(两个插入和一个更新),预订的插槽和两个可用插槽.

继承这样做,跟着时刻框架变得越发分手,预订流程将包罗以下之一:

>为或人分派一个完备的“可用插槽”(一次更新)
>将“可用插槽”拆分为两个(一个更新和一个插入)
>假若有人从可用插槽中读出中间部门,则将插槽拆分为3(如上所述).

这并不长短常伟大的打点和搜刮进程酿成一个简朴的查询:在所需的时刻范畴内找到任何可用的槽(预订= false或customerid = 0,无论你回收哪种方法)enddate – startdate> =你想要的天数.

它使预订/可用性表的巨细翻倍,并使预订变得不那么简朴,但衡量的是搜刮进程就像它一样轻易.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读