gpt4 book ai didi

mysql - 查询以显示不在列表中的项目

转载 作者:行者123 更新时间:2023-11-30 23:31:42 25 4
gpt4 key购买 nike

此查询返回在特定日期有人入住的#077 房间的列表;如何反转此查询并仅显示 07:00:00 和 22:00:00 之间不在数据库中的时间? (30分钟间隔)每节课只需要1小时30分钟

select 
*
from
(select
rooms.id, rooms.number, rooms.building, rooms.capacity
from
rooms) R1,
(select
exam_schedules.room_id,
exam_schedules.day,
exam_schedules.start_time,
exam_schedules.end_time
from
exam_schedules) R2
where
R2.room_id = R1.id and R2.day = 'tuesday' and R1.number = '077'

这是结果:

ID  number  Bulding Capacity    room_id day start_time  end_time
1 077 ACT 12 1 tuesday 10:30:00 12:00:00

但我需要下面显示的结果(这几乎显示了未被考试占用并且不能被其他考试占用的可用时间,因为它可能会导致安排问题:例如,如果考试已经安排在10.30,只应显示 9.00(不是 9.30),因为如果显示 9.30 - 会导致冲突:9.30+1.30 = 11.00 - 但我已经为这个房间安排了 10.30-12.00)

 1  077 ACT 12  1   tuesday 07:00:00
1 077 ACT 12 1 tuesday 07:30:00
1 077 ACT 12 1 tuesday 08:00:00
1 077 ACT 12 1 tuesday 08:30:00
1 077 ACT 12 1 tuesday 09:00:00
//note that time frame from 9.30-10.30 is not available since there is a class at 10.30 scheduled already
//note that time period 10.30-<12.00 not shown since class is already scheduled for this timeframe 10.30-12.00
1 077 ACT 12 1 tuesday 12:00:00
1 077 ACT 12 1 tuesday 12:30:00
1 077 ACT 12 1 tuesday 13:00:00
1 077 ACT 12 1 tuesday 13:30:00
1 077 ACT 12 1 tuesday 14:00:00
1 077 ACT 12 1 tuesday 14:30:00
1 077 ACT 12 1 tuesday 15:00:00
1 077 ACT 12 1 tuesday 15:30:00
1 077 ACT 12 1 tuesday 16:00:00
1 077 ACT 12 1 tuesday 16:30:00
1 077 ACT 12 1 tuesday 17:00:00
1 077 ACT 12 1 tuesday 17:30:00
1 077 ACT 12 1 tuesday 18:00:00
1 077 ACT 12 1 tuesday 18:30:00
1 077 ACT 12 1 tuesday 19:00:00
1 077 ACT 12 1 tuesday 19:30:00
1 077 ACT 12 1 tuesday 20:00:00
1 077 ACT 12 1 tuesday 20:30:00
1 077 ACT 12 1 tuesday 21:00:00
1 077 ACT 12 1 tuesday 21:30:00
1 077 ACT 12 1 tuesday 22:00:00

数据库中不存在包含所有可能时间范围的表格。我可以将它编码到查询中吗?

最佳答案

您需要创建所有可能值的列表。您可以使用如下查询执行此操作: 选择 * 来自(从双联合所有选择'2012-01-01 7:00:00' 从 dual union all 中选择“2012-01-01 7:30:00”。 . . ) 次

也就是可以用union all把数据拼在一起。我发现使用 Excel 将完成这项工作所需的 SQL 语句放在一起最简单。

也就是说,您应该考虑日历/日历时间表。拥有一个包含每个可能时间段的表格可能会在将来对您有所帮助。

关于mysql - 查询以显示不在列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10256185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com