объединение до 3 таблиц в MySQL

#mysql #database #join

#mysql #База данных #Присоединиться

Вопрос:

У меня есть таблицы:

student{student_id как основной ключ, имя, фамилия};

teacher{teacher_id как основной ключ, имя, фамилия};

курс{course_id как основной ключ, имя курса, кредиты, teacher_id (начальный ключ из таблицы teacher)}

класс {class_id в качестве основного ключа, номер комнаты, teacer_id forein_key от преподавателя, course_id forein_ключ из курса}

classStudent{внешний ключ student_id от student, внешний ключ class_id от class}

Я хочу восстановить имя курса, имя и фамилию преподавателя, номер комнаты для конкретного идентификатора студента.

моя база данных:

     CREATE TABLE `student` (
    `student_id` int(10) NOT NULL,
      `firstName` varchar(20) NOT NULL,
      `lastName` varchar(20) NOT NULL,
      `phone_number` int(8) NOT NULL,
      `Email` varchar(40) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `teacher` (
  `teacher_id` int(10) NOT NULL,
  `firstName` varchar(20) NOT NULL,
  `lastName` varchar(20) NOT NULL,
  `phone_number` int(8) NOT NULL,
  `Email` varchar(40) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


CREATE TABLE `course` (
  `course_id` varchar(10) NOT NULL,
  `Course_Name` varchar(20) NOT NULL,
  `Description` varchar(100) NOT NULL,
  `credits` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


ALTER TABLE `class`
  ADD PRIMARY KEY (`class_id`),
  ADD KEY `classTeacher` (`teacher_id`),
  ADD KEY `classCourse` (`course_id`);

ALTER TABLE `classstudent`
  ADD PRIMARY KEY (`class_id`,`student_id`),
  ADD KEY `studentClass` (`student_id`);
-- Constraints for table `class`
--
ALTER TABLE `class`
  ADD CONSTRAINT `classCourse` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`) ON UPDATE CASCADE,
  ADD CONSTRAINT `classTeacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`teacher_id`);

--
-- Constraints for table `classstudent`
--
ALTER TABLE `classstudent`
  ADD CONSTRAINT `classstudent_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`class_id`),
  ADD CONSTRAINT `studentClass` FOREIGN KEY (`student_id`) REFERENCES `student` (`student_id`);
ALTER TABLE `classstudent`
  ADD PRIMARY KEY (`class_id`,`student_id`),
  ADD KEY `studentClass` (`student_id`);
 

Я также новичок в stack-overflow, поэтому, пожалуйста, скажите мне, есть ли какие-либо замечания по моему вопросу.

Ответ №1:

 Select  course.courseName, teacher.firstName, teacher.lastName, class.roomNumber
from student
 inner join classStudent 
on student.student_id=classStudent.student_id
 inner join class
on classStudent.class_id = class.class_id
Inner join course
On class.course_id = course.course_id
Inner join teacher
On course.teacher_id = teacher.teacher_id
Where student.student_id = ?