1

私はあまり得意ではない内部結合を使用することによってのみ解決できる MYSQL に問題があります。私は 4 つのテーブルを持っています。

表 1: 教室 の教室 ID、名前、.......

表 2: 教師 fname、mname、lname、.......

表 3: 科目 subjectID、名前、classroom_id、.....

表 4 Teachers_subjects teacher_id および subject_id

すべてのクラス名 (classrooms.name) とすべての科目名 (subjects.name) を取得するクエリが必要です。ここで、subjects.classroom_id = 教室.classroomID

また、Teachers_subjects.subject_id = subject.subjectID および Teachers_subjects.teacher_id = teacher.teacherID である教師の名前 (teachers.name) も取得したいと考えています。

私は現在このクエリを使用しています:

SELECT classrooms.name, subjects.name, 
concat(teachers.fname,' ',teachers.mname,' ',teachers.lname) as Teachers_name  
FROM classrooms, subjects, teachers, teachers_subjects 
WHERE
subjects.classroom_id=classrooms.classroomID 
AND 
teachers_subjects.teacher_id=teachers.teacherID 
AND
teachers_subjects.subject_id=subjects.subjectID

私は欲しいものを手に入れましたが、テーブルteachers_subjectsになくても、すべてのクラスとそれに対応する科目を取得したいと考えています。これは、科目がどの教師にも割り当てられていない場合でも、すべてのクラスとその科目を一覧表示するためです。

ありがとう

4

1 に答える 1

2

次のようなものを試すことができます

SELECT  classrooms.name, 
    subjects.name, 
    concat(teachers.fname,' ',teachers.mname,' ',teachers.lname) as Teachers_name  
FROM    classrooms INNER JOIN
    subjects ON subjects.classroom_id=classrooms.classroomID  LEFT JOIN 
    teachers_subjects ON teachers_subjects.subject_id=subjects.subjectID LEFT JOIN
    teachers ON teachers_subjects.teacher_id=teachers.teacherID 

この記事 ( JOIN の紹介 – JOIN の基本) を見て、グラフィカルな紹介をご覧ください。

于 2013-08-19T17:32:43.637 に答える