2

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

MomID我想要表中 EACH 的目录行,Registration,无论表中是否MomID引用了该目录行Kids。我不能把它排除在外,因为如果在列出了孩子Kids,那需要在目录中。

MomID目前,我的查询仅返回同时位于Registration和中的那些记录Kids。我正在过滤数据,以便仅从Registration当前YearStart字段中获取记录,因此我无法将其设为 OR 语句(即使我知道如何)。如何获取Registration符合YearStart条件的每条记录,如果相关信息MomID不存在于Kids

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

4

1 回答 1

3

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

在你的情况下,它会像

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

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

于 2013-09-23T17:52:25.483 回答