我无法弄清楚如何编写查询

时间:2017-10-07 21:28:09

标签: mysql sql join sqlplus

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

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;

我该如何解决?

3 个答案:

答案 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提供)以图片形式解释

enter image description here

因此,您的查询将起到:

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