2017-10-07 15 views
-1

私はテーブルのセットを持っていますし、それらを使っていくつかの特定の情報を表示する方法は本当に分かりません。テーブルは以下の構造を持っています:クエリを書く方法を理解できません

profs 
profs_id | name 

teaching 
profs_id | course_id 

courses 
course_id | course_title 

私はまだ割り当てられたコースを持っていないすべての教授を表示しようとしています。次のクエリを書きましたが、正しく動作しません。

SELECT p.name 
    FROM profs p 
    JOIN teaching t 
    ON p.id_profs <> t.id_profs; 

どうすれば修正できますか?

+0

は、私も試してみました:Pを選択.name FROM profs pジョインティーチングオンON p.id_profs = t.id_profs WHERE p.id_profs <> t.id_profs;それはどちらもうまくいきません。 – AndrB

+2

基本的な本や初心者のチュートリアルで十分です – Strawberry

答えて

0

あなたは左があなたのFROM句(各教授のための、すなわち一つのエントリ)からすべてのレコードを使用して、テーブルのJOIN左からすべてのレコードに参加する参加するという事実を利用することができます。したがって、コースを割り当てられていない教授には、彼の記録のためのcourse_idはありません。それをWHERE句に指定すると、完了です。

SELECT p.name 
FROM profs p 
LEFT JOIN teaching t ON t.profs_id = p.profs_id 
WHERE t.course_id IS NULL 
+1

ありがとうございます!出来た!あなたはそれをより分かりやすく理解しました! :D – AndrB

0
SELECT 
Profs.name 
FROM profs, teaching 
WHERE profs.profs_id = teaching.prof_id 
    AND course_id ISNULL 
0

This questionの種類は、あなたが達成することができ、どのようにあなたがそれを達成したい合流説明しています。この場合、ヌルの場合はLEFT OUTER JOINとします。

この画像Google画像検索(SQL権限の礼儀が)その結果、この絵

enter image description here

を説明してから、クエリのように動作します:

SELECT p.name 
    FROM profs p 
    LEFT OUTER JOIN teaching t 
    ON p.id_profs = t.id_profs 
    WHERE t.id_profs IS NULL; 
関連する問題