Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL统计每个类别的唯一IP地址数_Sql_Ms Access - Fatal编程技术网

使用SQL统计每个类别的唯一IP地址数

使用SQL统计每个类别的唯一IP地址数,sql,ms-access,Sql,Ms Access,我正在自学SQL和Access 2016,现在我正在尝试做以下工作: 我有两个表,表1包含URI和类别的列表,表2包含URI和IP的列表。现在我想知道列表中每个类别有多少不同的IP。表1的URI列是表2的URI列的子集 Table 1: URI | Categories Table 2: URI | IP 显然,我应该使用URI对两个表进行内部连接,这会让我: URI | Categories | IP 现在我需要找出每个类别有多少不同的IP。例如,如果类别是“船”,我想知道该类别有多少

我正在自学SQL和Access 2016,现在我正在尝试做以下工作:

我有两个表,表1包含URI和类别的列表,表2包含URI和IP的列表。现在我想知道列表中每个类别有多少不同的IP。表1的URI列是表2的URI列的子集

Table 1:
URI | Categories

Table 2: 
URI | IP
显然,我应该使用URI对两个表进行内部连接,这会让我:

URI | Categories | IP
现在我需要找出每个类别有多少不同的IP。例如,如果类别是“船”,我想知道该类别有多少不同的IP。我相信这可以通过COUNT实现,但这只适用于一个类别,对吗?我想计算出在一个巨大的数据集中(数百万行),每个类别有多少不同的IP,所以不仅仅是一个类别

所以基本上我希望得到的是这样的输出:

Category | # of unique IP's
___________________________
Boats    | 5
Insects  | 22
这个问题可能有点简单,老实说,我已经想了一整天了,因为这个问题似乎太简单了,我不想在这里问,但我现在被卡住了

提前感谢您的帮助

另外,如果你需要更多的例子或解释我正在尝试做什么,请告诉我,我会得到的!:)

编辑:

我忘了用DISTINCT。。所以我刚刚添加了这个,但是现在我在Access 2016中得到了一个语法错误?以下是我的SQL查询:

SELECT Count(DISTINCT Final_parsed_userlogs_access.Field1) AS CountOfField1, Final_category_list_all_uri_access_edited.Field2
FROM Final_category_list_all_uri_access_edited INNER JOIN Final_parsed_userlogs_access ON Final_category_list_all_uri_access_edited.Field1 = Final_parsed_userlogs_access.Field4
GROUP BY Final_category_list_all_uri_access_edited.Field2;
小型最终编辑:
显然,Access 2016不适用于Count distinct(),但我不明白如何编辑自己的查询以使用此修复程序?

根据类别对其进行分组,这应该会有所帮助

访问引擎不支持

SELECT count(DISTINCT....) FROM ...
你必须这样做:

SELECT count(*) 
FROM
(SELECT DISTINCT Name FROM table1)
将查询编辑为:

    SELECT Count(T.Field1) AS CountOfField1, T.Field2
     FROM
    (SELECT Final_parsed_userlogs_access.Field1, Final_category_list_all_uri_access_edited.Field2
    FROM Final_category_list_all_uri_access_edited INNER JOIN Final_parsed_userlogs_access ON Final_category_list_all_uri_access_edited.Field1 = Final_parsed_userlogs_access.Field4
    GROUP BY Final_category_list_all_uri_access_edited.Field2, Final_parsed_userlogs_access.Field1) as T
    GROUP BY T.Field2;

希望有帮助。

提示:
内部连接
分组依据
。哦,我还没有尝试分组依据,谢谢!我要试着玩弄它:)就是这样!我知道这是一个简单的问题哈哈:“)谢谢你的帮助,我实际上犯了一个小错误,我忘了使用distinct,所以它计算了所有的IP,而不是唯一的。我认为只要向查询中添加DISTINCT就可以修复它,但当我这样做时,Access 2016会说有语法错误。。你能看看我的问题吗?:)为了更好的可读性,我把它添加到了开场白中!我正在编辑我的原始答案,以包含此操作所需的更改。已更新答案以包含您的查询。未经测试,但应能正常工作。告诉我进展如何。很高兴听到这个消息。非常感谢。