我正在使用PHP,MySQL来开发一个在教育机构中使用的网站。
这样做的一个功能是在创建批处理时分配讲座。要将讲座分配到起始批次,系统将根据其可用性和资格提示可用的讲座。然后课程协调员将做出决定。
我的问题是如何在给定时间段的特定工作日检查讲座的可用性。(时间段不同而不是固定的持续时间)
我打算将讲座时间表保存在一个表格中,其中显示讲座_Id,Batch_Id,day,start_time,end_time,start_day,end_day。
然后在可用性检查时,我需要编写一个复杂的查询来检查可用的讲座_Id。我还想不出来。
还有其他聪明的方法吗?
谢谢
答案 0 :(得分:0)
你提出存储信息的方式是我想到的第一种方式 - 虽然复杂的查询并不是那么糟糕。
所以,如果我理解正确,你的讲座存储在另一个表中,与你的lecture_schedules表有一对一的关系吗? 如果是这样,这将获得给定时间范围内的讲座详细信息。
这样的事情:
SELECT * FROM lecture_schedules
INNER JOIN lectures USING(lecture_id)
WHERE start_day<=DAY(yourstarttime) AND end_day>=DAY(yourendtime)
AND start_time<=yourstarttime AND end_time>=yourendtime;
请注意,您需要编辑表名和列名以反映实际架构,并将yourstarttime
和yourendtime
替换为时间范围值。
希望这有帮助
编辑: 此查询对模式中这些列的列和数据类型进行了若干假设 - 不要只复制&amp;粘贴并期望它第一次工作:)