2014-03-29 82 views
0

我有以下表格,需要對它們運行查詢。需要JOIN驗證的SQL查詢

老師:

teacher_code 
initial 
name 

學生:

stud_no 
initial 
insertions 
name 
birth_date 
address 
city 
class_code 

類:

class_code 
classname 
Module: 
module_code 
modulename 

Teacher_module:

teacher_code 
module_code 
class_code 

等級:

stud_no 
module_code 
date 
grade 

我需要寫的查詢如下。

哪個科目(科目名稱)J. Doe不教?

而這就是我能想出?

SELECT t.Initial, t.name, m.modulename 
FROM Teacher AS t 
    NATURAL JOIN 
     Module AS m 
    NATURAL JOIN 
     Teacher_module AS tm 
    ON 
     t.teacher_code = tm.teacher_code 
WHERE t.Initial <> 'J' 
    AND 
     t.name <> 'Doe' 

這是正確的查詢.....我不能對此進行測試,因爲我正在做一個紙,並沒有例子dB來測試。

感謝您的幫助。

+0

我可以看出它並不回答問題。這個查詢會有一個「左連接」,「不在」或「不存在」的查詢。 –

+0

什麼阻止你有一個示例數據庫? – Vatev

+0

http://sqlfiddle.com/使您能夠測試針對關係數據庫的查詢,而無需安裝。 –

回答

0

我把它作爲「subject」是模塊的同義詞。你的WHERE子句是選擇非J或Doe的教師,而不是J Doe沒有教授的模塊。這將是這樣的:

快速嘗試

SELECT m.modulename 
FROM Module m 
WHERE NOT EXISTS 
(SELECT * FROM teacher_Module tm 
    INNER JOIN Teacher t 
     ON t.teacher_code = tm.teacher_code t.Initial = 'J' AND t.name = 'Doe' 
    WHERE tm.module_code = m.module_code) 

你也可以使用一個左連接到teacher_Module和教師,然後再檢查tm.module_code IS NULL。