如何添加计算列以显示一对多关系中匹配行的总数

how can I add a calculated column that would show the total # of matching rows in a one-to-many relationship

我有两个具有一对多关系的 table。我想创建一个计算列 Table1,它显示 Table2 中的行数,如下所示。

我如何使用 MS Access 执行此操作?我知道我可以使用查询,但我希望在 table 本身中显示它。

╔═════════════════════════════╗
║ Table1                      ║
╠════╦══════╦═════════════════╣
║ ID ║ name ║ count in Table2 ║
╠════╬══════╬═════════════════╣
║  1 ║ a    ║               1 ║
║  2 ║ b    ║               4 ║
║  3 ║ c    ║               1 ║
║  4 ║ d    ║               3 ║
║  5 ║ e    ║               1 ║
╚════╩══════╩═════════════════╝


╔══════════════════════════╗
║ Table2                   ║
╠════╦═════════╦═══════════╣
║ ID ║  name   ║ Table1 ID ║
╠════╬═════════╬═══════════╣
║  1 ║ alpha   ║         2 ║
║  2 ║ bravo   ║         4 ║
║  3 ║ charlie ║         4 ║
║  4 ║ delta   ║         3 ║
║  5 ║ dingo   ║         2 ║
║  6 ║ mango   ║         2 ║
║  7 ║ pancake ║         1 ║
║  8 ║ banana  ║         2 ║
║  9 ║ cookie  ║         5 ║
║ 10 ║ fart    ║         4 ║
╚════╩═════════╩═══════════╝

您可以使用子查询。像这样:

select id, [name], (select count(*) from table2 where table1.id = table2.table1_id) as [count in table2] from table1

正在回答以供将来参考,但这是不可能的。 MS Access 中的计算列无法使用查询,none 个可用函数可用于执行此操作。

我没有 Access 2010 来对此进行测试,但一种可能的途径是域函数 DCount (https://support.office.com/en-ca/article/DCount-Function-f6b5d78b-ad0b-4e42-be7a-11a64acbf3d3):

在计算字段表达式中,您可以使用:

DCount("*","Table2","[Table1 ID]=" & [Table1].[ID])

这适用于查询:

SELECT
    Table1.*,
    DCount("*","Table2","[Table1 ID]=" & [Table1].[ID]) AS ForeignCount
FROM Table1;

但是,我认为这是您应该超越是否可以并考虑是否应该考虑的情况之一。计算字段不属于表,它们属于查询或表示层。