2017-10-07 126 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 JOIN teaching t 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

這從谷歌圖片搜索(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;