我是一名学生,试图设计一个系统,可以在特定时间和日期找到所有空房间,给定教授们根据他们学校现有的数据库进行安排。 对于每个房间,计划从7:30:00 - 19:30:00(增量00:30:00)生成到名为'room_schedule'的表格。每个房间的时间表由room_id引用,来自另一个表'room_details'。另一方面, 桌子'room_details'被链接到表'prof_schedule'按房间。教授的日程安排记录在现有的“prof_schedule”表上。如何从表A中选择与表B不匹配的行(使用基于表B的时间范围)
这里的表看起来怎么样
TABLE 'room_schedule' day time_start time_end room_id MWF 07:00:00 07:30:00 36 MWF 07:30:00 08:00:00 36 MWF 08:00:00 08:30:00 36 MWF 08:30:00 09:00:00 36 MWF 09:00:00 09:30:00 36 MWF 09:30:00 10:00:00 36 MWF 07:00:00 07:30:00 37 MWF 07:30:00 08:00:00 37 MWF 08:00:00 08:30:00 37 MWF 08:30:00 09:00:00 37 MWF 09:00:00 09:30:00 37 MWF 09:30:00 10:00:00 37 TABLE 'room_details' room_id room_name room 36 Biology Room 309 37 Physics Room 307 TABLE 'prof_schedule' sched_id professor Day room time_start time_end subj 1 Jeffrey Smith MWF 309 8:00:00 9:30:00 Biology 2 Ben Williams MWF 307 8:30:00 10:00:00 Physics
从教授的时间表基于,我想要的结果对于空置房是这样
RESULT vacant rooms day time_start time_end room_name MWF 07:00:00 07:30:00 Biology Room MWF 07:30:00 08:00:00 Biology Room MWF 09:30:00 10:00:00 Biology Room MWF 07:00:00 07:30:00 Physics Room MWF 07:30:00 08:00:00 Physics Room MWF 08:00:00 08:30:00 Physics Room
我曾尝试下面的查询,但它好像删除了'room_schedule'中的所有记录,其中time_start和time_end来自'prof_schedule'
SELECT day, time_start, time_end, room_name
FROM room_details AS rd
INNER JOIN room_schedule AS rs
ON rd.room_ID=rs.room_ID
WHERE (
(time_start NOT IN(SELECT time_start FROM prof_schedule)) AND
(time_end NOT IN (SELECT time_end FROM prof_schedule)) AND
(rs.day NOT IN (select day from prof_schedule)) AND
(rs.room_id NOT IN (SELECT DISTINCT rd.room_ID from room_details AS rd
INNER JOIN prof_schedule AS ps on rd.room=ps.room))
)
有人可以提出一个查询,显示我提到的结果吗?
P.S. 第三个表(prof_schedule)的设计需要保留,因为它们将从现有系统导入到我正在设计的系统中。
如果我们知道,每个房间可以在半小时插槽从7点30分零零秒预订 - 19:30:00,那么我们真的不需要room_schedule表。我们只需知道房间何时不可用。 – Strawberry
我明白了。感谢您的回复......是否意味着我错误地使用了room_schedule表?哈哈。我已经看到了一些类似于你所说的帖子。但是让我们假设我删除了room_schedule表,然后房间A将用于MWF,从8:00 - 9:00,我将如何显示房间A将从7:30至8:00以及剩下的几小时('19:30)每MWF? – dissidianUltima
MWF是“星期一,星期三和星期五”? – Strawberry