2016-07-20 15 views
-1

Ich setzte den ganzen Tag lesen Fragen auf stackoverflow wie jouin 3 Tabelle in einer SQL-Abfrage, ich versuche es oft, aber es hat nicht funktioniert !!Fehler auf der linken Join drei Tabellen in Mysql

mein Fall ist so, ich möchte verstehen, wie es Arbeit ist und wie ich es tun soll.

meine SQL-Abfrage ist die folgende:

SELECT students.id, 
     students.name, 
     students.age, 
     students.subjects, 
     students.teacher from students 
LEFT JOIN subjects ON students.subjects = subjects.subject_id 
LEFT JOIN teachers ON students.teacher = teachers.teacher_id 

Was in meinem Fall das falsch?

+0

Sie dort einen Tippfehler haben - sollte es sein 'from' nicht' form'. Es würde auch helfen, wenn Sie Ihr Tabellenschema zeigen könnten – RamRaider

+0

Formular muss von sein. Fehler bei der Schreibweise von. – Bhavin

+0

Sorry, aber das Problem bleibt – Evemtor

Antwort

1

Sie sind eine Bedingung in der zweiten LEFT JOIN fehlt:

SELECT s.id, s.name, s.age, s.subjects, s.teacher 
FROM students s LEFT JOIN 
    subjects su 
    ON s.subjects = su.subject_id LEFT JOIN 
    teachers t 
    ON s.teacher = t.teacher; 

Sie sollten beachten Sie jedoch, dass die Abfrage nur Spalten aus students holen ist, so brauchen Sie nicht die (an dieser Stelle verbindet, Ich vermute, die Abfrage, die Sie wollen, ist komplizierter.

+0

Vielleicht ist es nur ich, aber 'LEFT JOIN' auf die selbe Zeile wie' FROM' oder 'ON' zu stellen sieht total komisch aus ... egal, richtige Antwort. –

+0

Woher kam das "s" in den Studenten? – Evemtor

+0

Es ist ein Alias. Sie können sagen 'VON Studenten AS s' und beziehen sich damit auf' s'. Macht es kürzer und ein wenig klarer. Das "AS" - wie es hier der Fall ist - ist optional. –

-1

dieses bro Versuchen

select stud.id,stud.name,stud.age,stud.subjects,stud.teacher 
from students stud, subjects sub ,teachers tea 
where stud.subjects = sub.subject_id and stud.teacher = tea.teacher_id 
+0

Das funktioniert anders: Ein 'LEFT JOIN' wählt auch Schüler aus, die keinen Lehrer haben. –

+0

Warum jemand meine Antwort abwertete .. – Goutham

+0

(Randnotiz/Haustier verärgert: warum abkürzen Sie die Tabellennamen, wenn es nicht die Länge erheblich reduziert? Es macht es nur schwieriger zu verstehen). –