使用MySQL生成时间表,在向表中插入记录时遇到困难

使用MySQL生成时间表,在向表中插入记录时遇到困难,mysql,stored-procedures,rdbms,Mysql,Stored Procedures,Rdbms,我想生成一个时间表。已经创建了三个表 create table subjects(subjectid int primary key,subjectname varchar (30)); insert into subjects values(1,'sub1'); insert into subjects values(2,'sub2'); insert into subjects values(3,'sub3'); insert into subjects values(4,'sub4');

我想生成一个时间表。已经创建了三个表

create table subjects(subjectid int primary key,subjectname varchar (30));
insert into subjects values(1,'sub1');
insert into subjects values(2,'sub2');
insert into subjects values(3,'sub3');
insert into subjects values(4,'sub4');
insert into subjects values(5,'sub5');
insert into subjects values(6,'sub6');

最后,这些主题和日期的时间表:

create table timetable(days varchar(30),slot1 varchar(10),slot2 varchar(10), slot3 varchar(10), 
                      slot4 varchar(10), slot5 varchar(10), slot6 varchar(10));
insert into timetable(days)
select days from Days;
insert into timetable(slot1)
select distinct subjectname from subjects;
select * from timetable;
我需要创建一个时间表,以便每行/每列都是不同的,并且同一主题不得在同一列中重复两次。使用DISTINCT给了我结果,但其他所有列都为NULL。当我尝试插入所有其他列时,出现“值不足”错误。 完成这项工作需要学习哪些概念? 此外,如果有多个章节和学期,如何在科目/教师之间不发生冲突的情况下插入。 提前感谢。

对于MySQL:

插入时间表(天)
选择日期
从天开始;
更新时间表
在时间表上加入天。天=天。天
在Days.dayid MOD 6=(subjects.subjectid+0)MOD 6加入受试者
设置timeline.slot1=subjects.subjectname;
更新时间表
在时间表上加入天。天=天。天
在Days.dayid MOD 6=(subjects.subjectid+1)MOD 6加入受试者
设置timeline.slot2=subjects.subjectname;
更新时间表
在时间表上加入天。天=天。天
在Days.dayid MOD 6=(subjects.subjectid+2)MOD 6加入受试者
设置timeline.slot3=subjects.subjectname;
更新时间表
在时间表上加入天。天=天。天
在Days.dayid MOD 6=(subjects.subjectid+3)MOD 6加入受试者
设置timeline.slot4=subjects.subjectname;
更新时间表
在时间表上加入天。天=天。天
在Days.dayid MOD 6=(subjects.subjectid+4)MOD 6加入受试者
设置timeline.slot5=subjects.subjectname;
更新时间表
在时间表上加入天。天=天。天
在Days.dayid MOD 6=(subjects.subjectid+5)MOD 6加入受试者
设置timeline.slot6=subjects.subjectname;
我已将PK列添加到
Days
表中


每当您发现自己使用枚举列名(比如上面的2)时,您都可以确信您的模式设计是次优的;数据库表不是电子表格。MySQL或SQL Server?请仅标记单个RDBMS。
create table timetable(days varchar(30),slot1 varchar(10),slot2 varchar(10), slot3 varchar(10), 
                      slot4 varchar(10), slot5 varchar(10), slot6 varchar(10));
insert into timetable(days)
select days from Days;
insert into timetable(slot1)
select distinct subjectname from subjects;
select * from timetable;