如果连接表中没有关联数据,则需要查询返回Null字段

时间:2013-09-23 17:30:14

标签: sql ms-access

我正在尝试在Access 2003中设计一个返回目录信息的查询。我希望包含的值之一包含在第二个表中,但该表没有我想要的所有记录的记录。

我想在表MomID中为EACH Registration,创建一个目录行,而不管表MomID中是否引用了Kids。我不能把它遗漏掉,因为如果Kids中列出 个孩子,则需要在目录中。

目前,我的查询仅返回MomIDRegistrationKids所在的记录。我正在过滤数据,以便我只从Registration获取当前YearStart字段的记录,因此我无法将其作为OR语句(即使我知道如何)。如何在符合Registration条件的YearStart中获取每条记录,并且如果MomID中没有相关Kids,则查询返回空字段< / p>

可以手动将MomID添加到Kids并将其他字段留空,但该解决方案缺乏优雅。我也不完全确定它会起作用,因为我在Kids中通过另外两个查询来运行数据以进行排序和连接,然后将其拉入目录查询。另外,如果我想扩展数据库以包括与该组相关的志愿者,我希望保留将无子女纳入目录的能力。

1 个答案:

答案 0 :(得分:3)

您所描述的是LEFT JOIN的经典案例。即使右侧部分没有匹配项,此运算符也会从连接的左侧部分带来所有记录,

在你的情况下,它会像

SELECT * FROM Registration LEFT JOIN Kids ON Registration.MomID = Kids.MomID
WHERE Registration.YearStart = Year(Date())

如果您不需要两个表中的所有字段,则仅使用必填字段替换*。