首页 > 解决方案 > Access - 使用一个查询计算多个表中的相同值

问题描述

我已经收到了几份我正在尝试处理的不同安全报告。我想计算一个特定的 IP 地址出现在 2 个不同的表中的次数。

我希望它看起来像这样:

IP 地址表 1 表 2

xxx.xxx.xxx 12 13

我见过很多人要求计算不同表中的单独值,但不同表中的值不同,所以我有点困惑。

我通过使用连接和计数功能使用内置查询设计器创建了一个表的初始计数;但是,如果我尝试多次加入,这个数字会变得很奇怪,我不知道发生了什么。当我尝试使用一张表时,Access 会吐出这个 SQL:

SELECT [Dell Printers by IP].Address, Count([Apache 12-24].[Vulnerability Title]) AS [CountOfVulnerability Title]
FROM [Apache 12-24] INNER JOIN [Dell Printers by IP] ON [Apache 12-24].[Asset IP Address] = [Dell Printers by IP].Address
GROUP BY [Dell Printers by IP].Address;

此外,扩展到更多的表而不是 2 个有多容易?

标签: ms-accesscountms-access-2010

解决方案


在不知道您的表在数据库中如何相关的情况下,我建议使用相关子查询:

select 
  [ip addresses].[ip address],
  (select count(*) from table1 where table1.[ip address] = [ip addresses].[ip address]) as t1,
  (select count(*) from table2 where table2.[ip address] = [ip addresses].[ip address]) as t2
from
  [ip addresses]

假设您要查询的 IP 地址位于名为ip addresses.


推荐阅读