我不知道如何编写查询
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;
我有一组表格,但我真的不知道如何使用它们来显示某些特定信息。这些表具有以下结构:
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;