2012-04-25 12 views
0

私はちょうど次のクエリが有効です。私は教授を含む1つのテーブルを教授が含んでいます。表題には件名が含まれていますprofessor_idテーブルとsubject_idフィールドを含むprofessor_subjectテーブルで多対多の関係が実現されます。このSQLクエリは有効です(多対多の関係)

今私はどの教授がどの科目を教えているか見る必要があります。私はこのSQLクエリを書いた:

SELECT concat(professor.name, " ", professor.surname) as "Professor", 
     subject.name as "Subject" 
FROM professor_subject, subject, professor 
WHERE subject.id = subject_id 
    and professor.id = professor_id; 

このクエリは有効ですか?私はそれがいつも私が欲しいことをするのだろうか?私はJOINキーワードを使わなかったので疑いはほとんどありません。

感謝:)

+0

ジャスティン・ニースナーの答えは正しいが、ジョインには必ずしもJOINキーワードは必要ない。あなたは、そのソリューションを「教授として選択する(教授名、教授姓)」、「教授」としてsubject.nameを「科目」として 教授、科目、教授から投稿 professor.id = professor_subject.professor_id とprofessor_subject.subject_id = subject.id' –

+0

@AlexMonthy:それは私が怠け者であることを除いて、私が書いたものです。だから私は "professor_subject"を省略しました。前にsubject_idとprofessor_id :) – xx77aBs

答えて

1

番対象に教授を関連付けるここには何もありません。条件なしでクロス結合を使用しています(where句のsubject_idとprofessor_idがテーブル値またはクエリパラメータであるかどうかはわかりません)。

select concat(professor.name, " ", professor.surname) as "Professor", 
     subject.name as "Subject" 
from professor 
inner join professor_subject 
    on professor.id = professor_subject.professor_id 
inner join subject 
    on professor_subject.subject_id = subject.id 
+0

学生?私はあなたが主語だと思う。 subject_idとprofessor_idはprofessor_subjectテーブルのフィールドです - 私はそれらを教授者と相関させるために使用します。とにかく、ありがとうございます;) – xx77aBs

1

subject_idとprofessor_idがprofessor_subjectにあるとすると、あなたは大丈夫です。 JOINキーワードがすべてのバージョンのSQL(Oracle 9i以前など)で使用可能になる前に、これは結合が行われた方法でした。