SQL问题,JOINS

时间:2015-06-02 10:07:09

标签: sql ms-access left-join

我的SQL代码有问题。我的任务是提供一些关于教师(Lärare.personnummer)的信息,他们没有教授“Java2”课程(Kurstilfälle.kurs)。代码是对的,但我的问题是有一位老师没有教授任何课程(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')

也许有人可以帮我这个。感谢。

2 个答案:

答案 0 :(得分: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)

修改:我不知道Access语法,但请尝试INNER JOIN而不只是JOIN

答案 1 :(得分: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'