SQL 个问题,加入

SQL problems, JOINS

我的 SQL 代码有问题。我的任务是提供一些关于未教授课程 "Java2"(Kurstilfälle.kurs) 的教师 (Lärare.personnummer) 的信息。代码是正确的,但我的问题是有一位老师没有教过任何课程(kurs)。所以关于她的信息不在结果中。我想在我的结果中得到最后一个人的信息。

我的代码--> 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')

也许有人可以帮我解决这个问题。谢谢

使用连接这应该得到你想要的

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'

采用新风格 JOIN,return 一位 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)

编辑: 我不知道 Access 语法,但请尝试 INNER JOIN 而不是 JOIN!