我的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')
也许有人可以帮我这个。感谢。
答案 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'