2013-03-18 218 views
1

我已經表名學生其領域student_id數據,house_id等。 和主題,房屋,students_subjectsMySql的連接查詢左連接

我使用此查詢

SELECT students_subjects.student_id,students.house_id,students_subjects.subject_id,subjects.subject_name,students.rollno,students.first_name, students.last_name FROM 
students_subjects LEFT JOIN students on students_subjects.student_id=students.id 
LEFT JOIN subjects on students_subjects.subject_id=subjects.id WHERE students_subjects.class_years_section_id=1 

這是工作對我罰款..

現在我想從屋表弄房子的名字太

我嘗試這個查詢

SELECT students_subjects.student_id,students.house_id,houses.house_name, students_subjects.subject_id,subjects.subject_name,students.rollno,students.first_name, students.last_name FROM 
students_subjects LEFT JOIN students on students_subjects.student_id=students.id 
LEFT JOIN subjects on students_subjects.subject_id=subjects.id 

LEFT JOIN上students.house_id = houses.id 房子裏students_subjects.class_years_section_id = 1

AND students_subjects.school_session_id=1 AND students.is_active=1 

,這讓我house_name = NULL

任何人都可以告訴我如何獲得房子名稱。使用連接查詢

感謝

+0

這是常見的[MySQL的知識(HTTP://開發。 mysql.com/doc/refman/5.0/en/select.html)。你不能在'WHERE'語句之後加入'JOIN'。 – 2013-03-18 05:10:51

回答

7

查詢中的錯誤是由LEFT JOIN關鍵詞是後WHERE條款引起的,

SELECT students_subjects.student_id, 
     students.house_id, 
     students_subjects.subject_id, 
     subjects.subject_name, 
     students.rollno, 
     students.first_name, 
     students.last_name 
FROM students_subjects 
     LEFT JOIN students 
      on students_subjects.student_id=students.id 
     LEFT JOIN subjects 
      on students_subjects.subject_id=subjects.id 
     LEFT JOIN houses 
      on students.house_id=houses.id 
WHERE students_subjects.class_years_section_id = 1 AND 
     students_subjects.school_session_id = 1 AND 
     students.is_active = 1 

記住JOIN s爲的FROM條款的一部分。


更新1

SELECT b.student_id, 
     a.house_id, 
     b.subject_id, 
     c.subject_name, 
     a.rollno, 
     a.first_name, 
     a.last_name, 
     d.house_name    
FROM students a 
     INNER JOIN students_subjects b 
      ON b.student_id = a.id 
     INNER JOIN subjects c 
      ON b.subject_id = c.id 
     INNER JOIN houses d 
      ON a.house_id = d.id 
WHERE b.class_years_section_id = 1 AND 
     b.school_session_id = 1 AND 
     a.is_active = 1 
+0

你想知道更多什麼? – 2013-03-18 05:35:01

+0

我正在嘗試從房子表中獲取房子名稱。但它首先顯示我 – Rashmi 2013-03-18 05:35:07

+0

,你能向我解釋你想做什麼?我看到你正在加入所有表中的'students_subjects'。如果沒有學生,那麼房子的價值顯然爲零。 – 2013-03-18 05:36:56

0

你已經錯過放在WHERE條款,試試這個:

SELECT students_subjects.student_id,students.house_id,students_subjects.subject_id,subjects.subject_name,students.rollno,students.first_name, students.last_name 
FROM students_subjects 
    LEFT JOIN students ON students_subjects.student_id=students.id 
    LEFT JOIN subjects ON students_subjects.subject_id=subjects.id 
    LEFT JOIN houses ON students.house_id=houses.id 
WHERE students_subjects.class_years_section_id=1 
AND students_subjects.school_session_id=1 AND students.is_active=1