2015-06-02 59 views
2

我的SQL代碼有一些問題。我的任務是提供一些關於教師(Lärare.personnummer)的信息,他們沒有教過「Java2」課程(Kurstilfälle.kurs)。代碼是正確的,但我的問題是,有一位教師沒有教任何課程(kurs)。所以關於她的信息不在結果中。我想在我的結果中得到最後一個人的信息。SQL問題,JOINS

我的代碼 - >http://imgur.com/QT3u4TL

數據庫 - >https://ilearn2.dsv.su.se/mod/resource/view.php?id=21941

SELECT DISTINCT Person.personnummer, Person.namn, tjänsterum, telefon 
FROM Kurstillfälle, 
    Person, 
    Lärare 
WHERE Person.personnummer = Lärare.personnummer 
    AND Kurstillfälle.lärare = Person.personnummer 
    AND Lärare.personnummer NOT IN (SELECT Kurstillfälle.lärare 
            FROM Kurstillfälle WHERE kurs = 'Java2') 

也許有人可以幫助我。謝謝。

+0

你的問題是什麼?也把你的代碼放在你的問題中,並把你的樣本數據和預期的輸出 – Matt

+0

什麼表是tjänsterum&telefon從? – Matt

+2

請將代碼作爲文本發佈,而不是圖片,以便我們可以輕鬆地複製和編輯答案。向我們展示數據庫模型和不起作用的查詢 – Kyborek

回答

3

款式新JOIN什麼,返回一個老師誰NOT EXISTS作爲老師的Java2:

SELECT p.personnummer, p.namn, tjänsterum, telefon 
FROM Person p 
    INNER JOIN Lärare l ON p.personnummer = l.personnummer 
WHERE NOT EXISTS (SELECT 1 FROM Kurstillfälle 
        WHERE kurs = 'Java2' 
        AND lärare = p.personnummer) 

編輯:我不知道訪問語法,但嘗試INNER JOIN而不是僅僅JOIN

+0

謝謝,但我在FROM指令中出現語法錯誤。 – JLS

+0

即時猜測這是更大的代碼塊與上述錯誤的一部分? – Matt

0

使用連接這應該得到你想要

SELECT DISTINCT p.personnummer, p.namn, tjänsterum, telefon 
FROM Kurstillfälle k 
INNER JOIN Person p ON k.larare = p.personnummer 
INNER JOIN Lärare l ON p.personnummer = l.personnummer 
WHERE k.kurs !='Java2'