Python+SQLite帮助查找交集算法

wsxa1bj1  于 2022-11-14  发布在  SQLite
关注(0)|答案(1)|浏览(168)

请帮我理解一下,怎么写相交算法?
我写了一份会议日历。此日历使用SQLite3数据库存储会议。日历的工作时间范围为24小时或1440分钟。最短会议时间为1分钟。
用户输入开始会议(10:00),结束会议(11:00)>脚本将时间转换为600和660(小时*60+分钟)>在将数据写入数据库之前,脚本必须检查会议范围不会与数据库中的会议范围相交>如果没有拦截>将会议写入数据库。
如何检查数据库中输入会议和现有会议的交集?PS:对不起,我说英语了)

for more clarity:
new meeting: 
start_meeting    end_meeting
600              660

database meetings:
start_meeting    end_meeting
530              630
540              600
840              841
ssm49v7z

ssm49v7z1#

我认为这可能会奏效,但还没有时间测试所有的场景:

create table meetings (startM REAL, endM REAL);
insert into meetings VALUES(530,630);
insert into meetings VALUES(540,600);
insert into meetings VALUES(840,841);
select * from meetings where ((600 BETWEEN startM AND endM) OR (660 BETWEEN startM AND endM));

结果是:

530.0|630.0
540.0|600.0

BETWING操作符显然会告诉您一个数字是否在两个数字之间,我猜您希望“新会议”时间中的任何一个不在startM和endm之间。因此,如果有返回的记录,则存在冲突。
对于新的会议,您必须在Python中进行字符串替换,然后找出cur.fetchall()命令的长度,以查看是否存在冲突。
希望这是对你的一些指导。

相关问题