【问题标题】:join up to 3 tables in MySQL在 MySQL 中最多加入 3 个表
【发布时间】:2020-12-26 10:38:44
【问题描述】:

我的表是:

student{student_id asprimary key,firstName,lastName};

teacher{teacher_id asprimary key,firstName,lastName};

course{course_id asprimary key,courseName, credits,teacher_id(来自教师表的外键)}

class{class_id asprimary key,roomNumber,teacer_id forein_key from teacher,course_id forein key from course}

classStudent{student_id 来自学生的外键,class_id 来自班级的外键}

我想检索特定学生 ID 的课程名称、教师姓名、房间号。

我的数据库:

    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 的新手,所以请告诉我是否有任何关于我的问题的说明。

【问题讨论】:

    标签: mysql database join


    【解决方案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 = ?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-16
      • 2012-09-22
      • 1970-01-01
      • 2013-12-01
      • 2020-10-24
      • 2012-01-14
      • 1970-01-01
      相关资源
      最近更新 更多