2016-07-20 5 views
-1

私はすべての日の読書を設定します。1つのSQLクエリに3つのテーブルを入れ替える方法についてのstackoverflowに関する質問は何度も試みますが、うまくいきませんでした。左のエラーでmysqlの3つのテーブルを結合する

私の場合はこのようなものなので、どのように動作しているのか、どうすればいいのか理解したい。

私のSQLクエリは次のとおりです。

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 

私の場合は間違っていますか?

+0

この仲間を試してみてください - それは 'from'ない' form'でなければなりません。また、テーブルスキーマ – RamRaider

+0

が表示されている必要がある場合は、それが役に立ちます。からの綴りに誤りがあります。 – Bhavin

+0

申し訳ありませんが、問題は残っています – Evemtor

答えて

1

あなたは二LEFT JOINで条件が欠落しています

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; 

あなたは、クエリのみstudentsから列をフェッチしていること、しかし、注意しなければならないので、あなたは、この時点で(参加する必要はありませんが、私はあなたが望むクエリがより複雑であると推測しています)。

+0

それはちょうど私ですが、 'LEFT JOIN'を' FROM'や 'ON'と同じ行に置くことは、まったく奇妙に見えます...とにかく、正解です。 –

+0

学生の "s"はどこから来たのですか? – Evemtor

+0

エイリアスです。あなたは 'FROM students AS s'と言うことができます。それでは、' s'だけでそれを参照してください。それをもっと短くして、少し明確にします。 「AS」はここの場合のようにオプションです。 –

-1

は、あなたがそこにタイプミスがあり

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

これは別の方法で動作します。「LEFT JOIN」は、教師のない生徒も選択します。 –

+0

なぜ誰かが私の答えをdownvoteなぜ.. – Goutham

+0

(サイドノート/ペットピーブ:なぜそれが大幅に長さを短縮しないときにテーブル名を省略するのですか? –

関連する問題