0

私はたださまよっていますが、次のクエリは有効です。私は教授を含む教授と呼ばれる1つのテーブルを持っています。表の件名には件名が含まれています。多対多の関係は、professor_id フィールドと subject_id フィールドを含む Professor_subject テーブルで実現されます。

次に、どの教授がどの科目を教えているかを確認する必要があります。私はこの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 キーワードを使用していないので、少し疑わしいです。

ありがとう :)

4

2 に答える 2

1

subject_idとprofessor_idがprofessor_subjectにあると仮定すると、問題ありません。JOIN キーワードが SQL のすべてのバージョン (9i より前の Oracle など) で使用可能になる前は、結合はこのように行われていました。

于 2012-04-25T15:47:55.230 に答える
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
于 2012-04-25T15:40:29.160 に答える