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

时间:2015-07-21 13:24:54

标签: ms-access relationship one-to-many ms-access-2013 calculated-columns

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

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

╔═════════════════════════════╗
║ 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 ║
╚════╩═════════╩═══════════╝

3 个答案:

答案 0 :(得分:1)

回答以后的参考,但这是不可能的。 MS Access中的计算列不能使用查询,并且不能使用任何可用的函数来执行此操作。

答案 1 :(得分:-1)

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

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

答案 2 :(得分:-1)

我没有Access 2010来测试它,但一个可能的途径是域函数DCounthttps://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;

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