我正在尝试在Access 2003中设计一个返回目录信息的查询。我希望包含的值之一包含在第二个表中,但该表没有我想要的所有记录的记录。
我想在表MomID
中为EACH Registration,
创建一个目录行,而不管表MomID
中是否引用了Kids
。我不能把它遗漏掉,因为如果Kids
中列出 个孩子,则需要在目录中。
目前,我的查询仅返回MomID
和Registration
中Kids
所在的记录。我正在过滤数据,以便我只从Registration
获取当前YearStart
字段的记录,因此我无法将其作为OR语句(即使我知道如何)。如何在符合Registration
条件的YearStart
中获取每条记录,并且如果MomID
中没有相关Kids
,则查询返回空字段< / p>
我可以手动将MomID
添加到Kids
并将其他字段留空,但该解决方案缺乏优雅。我也不完全确定它会起作用,因为我在Kids
中通过另外两个查询来运行数据以进行排序和连接,然后将其拉入目录查询。另外,如果我想扩展数据库以包括与该组相关的志愿者,我希望保留将无子女纳入目录的能力。
答案 0 :(得分:3)
您所描述的是LEFT JOIN的经典案例。即使右侧部分没有匹配项,此运算符也会从连接的左侧部分带来所有记录,
在你的情况下,它会像
SELECT * FROM Registration LEFT JOIN Kids ON Registration.MomID = Kids.MomID
WHERE Registration.YearStart = Year(Date())
如果您不需要两个表中的所有字段,则仅使用必填字段替换*。