我在查找房间是否在特定时间范围内预订时遇到困难。我将房间的开始时间和结束时间存储在名为periodInformation的表中。
我无法理解sql中的时间/范围。我需要在下面查询pi.StartTime和pi.EndTime,看看是否预订了房间。在我的下面的例子中,用户输入了他们想要的房间从08:20到09:20。我想确保在搜索pi.StartTime和pi.EndTime的同时,如果从8:10 - 8:30或8:10-9:30等预订A1房间,我也会得到结果。
我认为我选择了合适的连接,只能找到连接两个表的示例,这里我加入4个表来确定房间是否被预订。
ExecuteSQL ( "
SELECT lr.pk_LessonRoomID
FROM LESSONROOM AS lr
LEFT JOIN Lesson AS l ON lr.fk_LessonID = l.pk_LessonID
LEFT JOIN PeriodInformation AS pi ON l.fk_PeriodListID = pi.fk_PeriodListID
LEFT JOIN PeriodList AS pl ON pi.fk_PeriodListID = pl.pk_PeriodListID
WHERE lr.fk_RoomID = ? AND pl.DayShort = ? AND pi.StartTime >=? AND pi.EndTime <=?" ;
"";
"" ;
"A1" ; "Mon" ; "08:20" ; "09:20")
答案 0 :(得分:1)
对于在8:20到9:20之间预订的房间,它必须有一个在8:20之后结束的课程,以及在9:20之前的STARTS。
因此,如果您将最后两个条件更改为:
AND pi.EndTime >=? AND pi.StartTime <=?
这应该涵盖它。