我不知道如何编写查询
Posted
技术标签:
【中文标题】我不知道如何编写查询【英文标题】:I can't figure out how to write a query 【发布时间】:2017-10-07 21:28:08 【问题描述】:我有一组表格,但我真的不知道如何使用它们显示一些特定信息。这些表具有以下结构:
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 p.name FROM profs p JOIN Teaching t ON p.id_profs = t.id_profs WHERE p.id_profs t.id_profs;它也不起作用。 任何基础书籍或初学者教程都足够 【参考方案1】:您可以利用左连接将使用 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
【讨论】:
谢谢!有效!你说得更清楚明白了! :D【参考方案2】:SELECT
Profs.name
FROM profs, teaching
WHERE profs.profs_id = teaching.prof_id
AND course_id ISNULL
【讨论】:
【参考方案3】:This question 解释了您可以实现的连接类型以及如何实现它们。在这种情况下,您需要执行 LEFT OUTER JOIN
where null。
这张来自谷歌图片搜索的图片(由 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;
【讨论】:
以上是关于我不知道如何编写查询的主要内容,如果未能解决你的问题,请参考以下文章