我想在mysql数据库上表示时间表。 我知道我应该有三张桌子:
classdetails
表 - 包含课程容量,课堂名称等。class_sessions
表,其中包含:start_time和session_out_time,class_unit
表,其中包含:课程名称(MAT003.set.c) class_sessions
表和class_unit
表中也会有适当的外键。
最终我希望能够查询“免费”类(在运行查询时目前没有类的类)并返回其名称,例如(Room 5b)
我列出的表格是否足以满足当前的查询?
任何有关如何做到这一点的想法都将受到赞赏。
答案 0 :(得分:1)
这就是你所说的,但我仍然没有100%自信你说的是你想要的。 : - )
CREATE TABLE rooms (
room_num VARCHAR(10) NOT NULL PRIMARY KEY
);
INSERT INTO rooms VALUES
('5B'),
('5C'),
('5D');
CREATE TABLE class_rooms (
class VARCHAR(15) NOT NULL,
room_num VARCHAR(10) NOT NULL,
CONSTRAINT room_nm_fm_rooms FOREIGN KEY (room_num) REFERENCES rooms(room_num),
PRIMARY KEY (class, room_num)
);
INSERT INTO class_rooms VALUES
('Algebra', '5B'),
('Calculus','5C'),
('Discrete Math', '5C');
完成此操作后,获取未使用房间号的一种方法是使用SELECT ... WHERE ... NOT IN查询。这可能不是最快的,但根据我的经验,这是最容易理解的语法。
SELECT room_num
FROM rooms
WHERE room_num NOT IN (SELECT room_num FROM class_rooms);