我不知道如何编写查询

I can't figure out how to write a query

我有一组表格,但我真的不知道如何使用它们来显示某些特定信息。这些表具有以下结构:

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;

我该如何解决?

SELECT 
 Profs.name 
FROM profs, teaching 
 WHERE profs.profs_id = teaching.prof_id 
    AND course_id ISNULL

您可以利用左连接将使用 FROM 子句中的所有记录(即每位教授一个条目)然后连接来自 LEFT JOIN table 的所有记录这一事实。因此,任何没有分配课程的教授都没有 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

This question 解释了您可以实现的联接类型以及如何实现它们。在这种情况下,您希望执行 LEFT OUTER JOIN where null。

这张图片来自 Google 图片搜索(由 SQL 权威机构提供)以图片方式解释了这一点

因此,您的查询将作为:

SELECT p.name 
  FROM profs p 
  LEFT OUTER JOIN teaching t 
    ON p.id_profs = t.id_profs
   WHERE t.id_profs IS NULL;