【问题标题】:Access is multiplying my query count by 38.... why?Access 将我的查询计数乘以 38.... 为什么?
【发布时间】:2017-05-02 18:26:34
【问题描述】:

我的数据看起来像


ID - 输入ID

  • 1 - 数据1
  • 2 - 数据2
  • 3 - 数据2
  • 4 - 数据2
  • 5 - 数据6

如果我运行一个生成每个数据输入计数的查询:

SELECT First(InventoryData2.InputID) AS FirstOfInputID, Count(InventoryData2.InputID) AS InputItemCount FROM InventoryInputT, InventoryData2 GROUP BY InventoryData2.InputID HAVING (((Count(InventoryData2.InputID))>=1)); 

根据数据,应该提供类似于

的内容

数据1:1


数据2:3


数据3:1


但是,访问显示我的总数为:


data1: = 38


数据2:= 114


数据3 = 38


知道为什么吗?

【问题讨论】:

  • 为什么是 MySQL 标签?
  • 老实说,这只是一个建议的标签,看到我有一些 SQL 代码,我认为它可能有点相关。如果不是,请道歉。

标签: ms-access count


【解决方案1】:

因为查询正在生成笛卡尔积。也就是说,InventoryInputT 中的每一行都与 InventoryData2 中的每一行匹配,这是一个叉积,因为查询指定了一个无条件的连接操作来限制哪些行要相互匹配。

GROUP BY 操作正在折叠行。删除 GROUP BY 子句和所有聚合函数,只返回详细信息行,您将看到发生了什么。

【讨论】:

  • 啊,是的,刚刚意识到“InventoryInputT”不应该存在。当我删除它时,计数会正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
相关资源
最近更新 更多