我不知道如何编写查询
问题描述:
我有一套表,我真的不知道如何使用它们显示一些特定的信息。这些表具有以下结构:我不知道如何编写查询
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;
我该如何解决这个问题?
答
你可以采取的一个事实,即左连接将使用的所有记录从FROM子句(即一个用于每个教授条目),然后从左边上的所有记录加入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
+1
谢谢!有效!你明白了解得更清楚! :d – AndrB
答
SELECT
Profs.name
FROM profs, teaching
WHERE profs.profs_id = teaching.prof_id
AND course_id ISNULL
答
This question解释型的连接就可以实现,你会如何实现这些目标。在这种情况下,你会想要做一个空的LEFT OUTER JOIN
。
这从谷歌图片搜索(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;
我想也是:选择P档.name FROM profs p JOIN teaching t ON p.id_profs = t.id_profs WHERE p.id_profs t.id_profs;它也不工作。 – AndrB
任何基本的书或初学者教程都可以满足 – Strawberry