我有一组表格,我真的不知道如何使用它们显示某些特定信息。表格具有以下结构:
profs
profs_id | name
teaching
profs_id | course_id
courses
course_id | course_title
我正在尝试显示尚未指定课程的所有教授。我编写了以下查询,但它无法正常工作:
SELECT p.name
FROM profs p
JOIN teaching t
ON p.id_profs <> t.id_profs;
我该如何解决?
答案 0 :(得分:0)
SELECT
Profs.name
FROM profs, teaching
WHERE profs.profs_id = teaching.prof_id
AND course_id ISNULL
答案 1 :(得分:0)
您可以利用左连接将使用FROM子句中的所有记录(即每个教授的一个条目),然后连接LEFT JOIN表中的所有记录。因此,任何没有指定课程的教授都没有为他的记录提供course_id。在WHERE子句中指定,然后就完成了。
SELECT p.name
FROM profs p
LEFT JOIN teaching t ON t.profs_id = p.profs_id
WHERE t.course_id IS NULL
答案 2 :(得分:0)
This question解释了您可以实现的联接类型以及如何实现这些联接。在这种情况下,您需要执行LEFT OUTER JOIN
null。
来自Google图片搜索的图片(由SQL Authority提供)以图片形式解释
因此,您的查询将起到:
的作用SELECT p.name
FROM profs p
LEFT OUTER JOIN teaching t
ON p.id_profs = t.id_profs
WHERE t.id_profs IS NULL;