我有三列,我想把它们组合在一个主表中

ig9co6j1  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(310)

我在mysql工作,我知道表关系'联接'等,我有三个不同的表,每个表都有列id,我想把所有三个id合并到一个主表中,因为我想在一个表中得到所有id后应用内部联接。你能告诉我如何在一个表中获得所有三个ID吗?我知道外键和主键,但我不知道如何在这里应用它们。。。或者有什么简单的方法。

我的表名称:

Table 1 contains: student_id coloumn
Table 2 contains: teachers_id
Table 3 contains: class_id

主表是表4:将有学生id、教师id、班级id列
我正在尝试生成时刻表,我想在主表时刻表中获得学生id、教师id和班级id;我正在尝试做规范化,这样我就不必一次又一次地重复所有的名字,我可以用id来调用任何类名,教师名,学科名等等,所有id都是表中的主键。
这种关系是一对一的
我正在开发php\umysql。
谢谢你

xytpbqjk

xytpbqjk1#

据我所知,如果我错了,请纠正我,一个班级有一个老师,简化,一个老师教一个或多个班级(更复杂的情况是每个班级不止一个老师):关系是1对多,所以班级表应该包含一个教师id
一个学生可以上多个班,但是一个班有很多学生,那么关系是多对多的,应该为每个学生创建一个新的表
当然,我们需要用相关信息填充它们,
一旦完成,我们就可以连接所有相关的表并得到时间表
添加教师id列:

ALTER TABLE class ADD COLUMN teacher_id INT(9) NOT NULL;
ALTER TABLE class ADD KEY teacher_id (teacher_id);

创建多对多表

CREATE TABLE class_per_student (
 id INT(11) NOT NULL AUTO_INCREMENT,
 class_id INT(9) NOT NULL,
 student_id INT(9) NOT NULL,
 PRIMARY KEY id (id),
 KEY class_id (class_id),
 KEY student_id (student_id)
);

时间表选择:

SELECT
 cps.class_id,
 cps.student_id,
 c.teacher_id
FROM
 class_per_student cps
 INNER JOIN class c ON c.id = cps.class_d
;

请注意,由于所有实体之间的关系都是多对多的,因此每个实体(class、teacher、student)都会出现多次,但这3个实体的唯一组合只会出现一次

5lhxktic

5lhxktic2#

创建如下表:,

create table subject(subject_id int primary key,sub_name varchar(20))
 create table teacher(teacher_id int primary key,teacher_name varchar(20))
 create table class(class_id int primary key,class_sec varchar(20))

 create table timetable(t_id int primary key,subject_id int references 
 subject(subject_id)
 ,teacher_id int references teacher(teacher_id),class_id int references 
 class(class_id))

插入样本值

insert into subject values(1,'Tamil')
 insert into teacher values(1,'Pugal')
 insert into class values(1,'12th A')
 insert into timetable values(1,1,1,1)

使用内部连接连接表,

select s.sub_name,t.teacher_name,c.class_sec from timetable t1 
 inner join subject s
 on s.subject_id = t1.subject_id inner join teacher t
 on t.teacher_id = t1.teacher_id inner join class c
 on c.class_id   = t1.class_id

试试这个…如果需要任何澄清,请回复我。。

hfwmuf9z

hfwmuf9z3#

SELECT Teachers.teacher_name, Class.class_sec, Subjects.subject_name FROM timetable
INNER JOIN Teachers ON Teachers.teacher_id = timetable.teacher_id
INNER JOIN Class ON Class.class_id = timetable.class_id
INNER JOIN Subjects ON Subjects.subject_id = timetable.subject_id

相关问题