我正在尝试在MS Access中进行查询。我有两个彼此相关的表,其中一些项具有直接关系并列在两个表中,以及一些只出现在一个表中的项。
我正在尝试创建一个查询,以便轻松查看其他表中未列出的项目。 (例如,我有2个表,一个学生列表和一个图书借阅列表,我想显示可能已经借用并且从未在一个查询中借过的学生)对于已借用的学生,它会显示出来很好,但对于那些从未借过的学生来说,它会删除整个行,让我留下过去曾借用过东西的学生。我想显示整个学生列表,即使他们已经借用了某些东西,如果他们从未借过某些东西,只需将借用字段留在查询中作为空字段。
我尝试使用 Is Null 作为其中一个条件,但这似乎不起作用。
请帮忙。提前致谢。
答案 0 :(得分:1)
您需要的是OUTER JOIN
。请阅读A Visual Explanation of SQL Joins
如果您要列出所有学生以及他们借阅的书籍总数,无论他们是否实际借用了任何书籍,您都可以使用这样的查询
SELECT s.id, s.name, COUNT(b.book_id) borrowed_count
FROM students s LEFT JOIN borrowed b
ON s.id = b.student_id
GROUP BY s.id
输出:
| id | name | borrowed_count | |----|------|----------------| | 2 | Jane | 0 | | 1 | John | 2 |
了解Jane从未借过书籍但仍然列出
请参阅SQLFiddle演示