2013-08-19 31 views
1

我有一個MYSQL問題,它只能通過使用內部連接來解決,而我不是那麼擅長,我有四個表。在有條件語句的多表上使用左連接

表1:教室 classroomID,姓名,.......

表2:教師 FNAME,MNAME,L-NAME,.......

表3:受檢 subjectID,名稱,classroom_id,.....

表4 Teachers_subjects teacher_id和subject_id

我希望有一個查詢來獲取我所有的類名(classrooms.name)及其所有科目名稱(subjects.name) 其中subjects.classroom_id = classrooms.classroomID

我也想獲取教師姓名(teachers.name)其中Teachers_subjects.subject_id = subject.subjectID 和Teachers_subjects.teacher_id = teachers.teacherID。

我目前使用此查詢:

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所有類及其相應的科目。這是列出所有班級及其科目,即使該科目沒有分配給任何教師。

感謝

回答

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 

看一看這對於一個不錯的圖形引入的文章(Introduction to JOINs – Basic of JOINs)。

+0

jezzz!我需要去學習這個東西,謝謝@astander它的作品 – user2666633