我有两个表与一对多的关系。我想创建一个计算列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 ║
╚════╩═════════╩═══════════╝
答案 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来测试它,但一个可能的途径是域函数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;
但是,我认为这是你应该考虑是否应该考虑是否应该考虑的情况之一。计算字段不属于表,它们属于查询或表示层。