2012-04-26 53 views
0

我正在使用PHP,MySQL开发一个网站用于教育机构。PHP/MySQL讲座分配

这样做的一个功能是在创建批次时分配讲座。为了将讲座分配到起始批次,系统将根据其可用性和资格提示讲座。然后,课程协调员将作出决定。

我的问题是如何检查给定时隙某一周的一天讲座的可用性。(时隙改变不固定的持续时间)

我打算继续讲课时间表在一个表,它显示lecture_Id,Batch_Id,day,start_time,end_time,start_day,end_day。

然后当可用性检查我需要编写一个复杂的查询来检查可用的lecture_Id。我还没搞清楚。

有没有其他聪明的方法来做到这一点?

感谢

+0

我建议将四个时间字段更改为MySQL中的两个DATE字段,这样可以减少_all的乐趣!_ – nyson 2012-04-26 11:56:26

回答

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; 

注意,你将需要编辑的表名和列名,以反映实际的模式,与时间范围值替换yourstarttimeyourendtime

希望这有助于

编辑: 该查询使有关架构中的列和这些列的数据类型几种假设 - 不只是复​​制粘贴&并期望它的工作第一次:)