当您想要从不同的表中检索具有相同结构的数据时,可以使用UNION查询。
在您的情况下,我认为最好的解决方案是JOIN查询,例如
SELECT M.field1, M.field2, M.field3, H.field1, H.field2 ...whatever fields you need
FROM Managers as M
LEFT OUTER JOIN [Design Hours Table] as H
ON H.Person = M.PersonID
ORDER BY ... whatever order you want
您可以将此查询用作报表的RowSource,告诉 Access 按 Managers 表中的所有字段对结果进行分组。
但是,如果您将其用于表单,则可以使用表单/子表单组合。
您将原始查询设置为表单的RowSource,并使用所有所需的字段和标签对其进行设计。然后你插入一个SubForm,
并告诉 Access 使用现有表或查询子表单数据,然后为此选择Design Hours表,并选择使用字段PersonID为Managers中的每条记录显示 Design Hours 中的记录。
现在,我想评论另一个问题:您在Managers表中有一个PersonID字段,这是正确的,因为经理是一个人。您的设计中不正确的是 Managers 表中存在FirstName和LastName列(除非它不是真正的表,而是查询)。原因是PersonID定义了一组属性,FirstName和LastName就在其中。因此,根据您的设计,您最终可能会得到一个PersonID = 2013, FirstName = John, LastName的经理= O'Connor 和 People 表中的 ID 2013 指的是FirstName = Peter,LastName = Sellers,这将是不一致的。
此外,您不需要此表中的 ID,因为字段 PersonID 最适合用作此表的 PK。
您从 People 表中检索 Name 和 SurName,因此连接类似于
SELECT M.field1, M.field2, M.field3, P.FirstName, P.LastName, H.field1, H.field2 ...whatever fields you need
FROM (Managers as M
INNER JOIN People as P ON P.ID = M.PersonID)
LEFT OUTER JOIN [Design Hours Table] as H
ON H.Person = M.PersonID
ORDER BY ... whatever order you want
问候,