Мне нужно больше информации, чтобы ответить на этот вопрос. Можете ли вы поделиться определением (DDL) из таблиц StudentNames, studentemail и ClassName?
В любом случае, я сделал пример, чтобы показать вам:
create table DatabaseStudents2 (StudentName varchar(25),
StudentEmail varchar(50), ClassName varchar(50));
create table StudentNames (id int, names varchar(25));
create table StudentEmail (id int, id_student int, email varchar(50));
create table ClassName (id int, id_student int, clname varchar(50));
В таблицах StudentEmail и ClassName есть столбец ' id_student ', чтобы идентифицировать студента, и он используется для присоединения.
Давайте вставим несколько строк. Студенты:
insert into StudentNames values (1, "John");
insert into StudentNames values (2, "Maria");
Теперь электронная почта:
insert into StudentEmail values (1, 1, 'john@email.com');
insert into StudentEmail values (2, 1, 'john.secondmail@email.com');
insert into StudentEmail values (3, 2, 'maria@email.com');
У студента «Джон» есть 2 электронных письма. В первом столбце указан адрес электронной почты, а во втором - студент.
Теперь класс:
insert into ClassName values (1, 1, 'First Class');
insert into ClassName values (2, 2, 'Second Class');
Выбор этих трех таблиц с объединением:
select s.names, e.email, c.clname from StudentNames s
inner join StudentEmail e on s.id = e.id_student
inner join ClassName c on s.id = c.id_student;
+-------+---------------------------+--------------+
| names | email | clname |
+-------+---------------------------+--------------+
| John | john@email.com | First Class |
| John | john.secondmail@email.com | First Class |
| Maria | maria@email.com | Second Class |
+-------+---------------------------+--------------+
Наконец , вставка, которую вы хотите:
insert into DatabaseStudents2 (StudentName, StudentEmail, ClassName)
select s.names, e.email, c.clname from StudentNames s
inner join StudentEmail e on s.id = e.id_student
inner join ClassName c on s.id = c.id_student;
Дайте мне знать, если я вам помог.