【问题标题】:Merging two different tables to form one but keeping related data合并两个不同的表以形成一个但保留相关数据
【发布时间】:2015-01-21 22:25:41
【问题描述】:

我对 Acess 有点陌生,正在尝试了解如何合并表。 我的问题基本上是这个... 我有 2 个可以运行并导出到 excel 的报告。我希望能够获取两个报告,将它们组合起来,然后将组合结果导入到表格中。

在一份报告中......称之为位置详细信息......具有以下字段:

ID        (PK, and autonumber)
Day       (Date call was done)
CallID    (Resets every day to 1, and increases by 1 for every new call)
Lat       (Lattitude of call)
Long      (Longitude of call)
Cost

在另一个报告中..称之为位置摘要..具有以下字段:

ID              (PK, and autonumber)
Location
City
Lat             (Lattitude of call)
Long            (Longitude of call)
# of Occurences (Number of times there was a call at that location)

问题是,当您在同一位置拨打电话时,即使是在两天内,它也会自动将其分组到出现次数中。所以我尝试从相同的日期范围运行 2 个单独的查询,一个匹配 lat,另一个匹配 long,它显示有重复项。我的猜测是因为那些没有匹配 lat 的查询(因为它已经使用了该字段一次,即使有 4 次出现)显示空值并作为副本添加到查询中。

我想将与长/纬度数据匹配的城市列添加到位置详细信息报告中,然后将其制成新表/然后能够运行相同的报告,并将它们添加到新表中,但以某种方式确保没有任何重复。

我最大的问题是没有任何真正的主键,因为呼叫 ID 取决于日期......我不确定如何真正做到这一点。

任何帮助将不胜感激...我很难过。

编辑:

第一个Query是加入纬度:

SELECT 
  [Location Detail Report_142].Day, [Location Detail Report_142].[Call ID], 
  [Location Detail Report_142].Lat, [Location Detail Report_142].Long 
FROM [Location Detail Report_142] 
LEFT JOIN [Location Summary Report_14] 
    ON [Location Detail Report_142].Lat = [Location Summary Report_14].Lat;       

第二个匹配呼叫ID:

SELECT qryRelationshipToLat.Day, qryRelationshipToLat.[Call ID], 
  [Location Summary Report_14].City 
FROM [Location Summary Report_14] 
INNER JOIN qryRelationshipToLat 
  ON [Location Summary Report_14].Long = qryRelationshipToLat.Long     
ORDER BY qryRelationshipToLat.Day, [Location Summary Report_14].City;    

我在想也许可以做出某种 if-then 语句来说明如果呼叫 ID 显示重复 THEN 匹配呼叫 ID...它必须匹配两者,当原始位置摘要报告被上传时,它有 283 条记录,但它显示重复的位置分组到另一个字段 (#_of_Occurances),所以呼叫的总数将是位置详细信息报告中的总数,在这种情况下是 288。所以当我运行第一个 qry - 305 个结果,第二个 qry 将 305 变为 337。所以我最终得到了很多我猜的重复项,或者空值。

但是这两个报告都不包括 Call ID 或 Call Numbers。他们共享的唯一信息是 LONG 和 LAT 坐标。所以我必须先匹配这些,然后将呼叫 ID、日期和城市分配给相应的坐标。

【问题讨论】:

  • 我建议您发布两个查询的 SQL(通过在 SQL 视图而不是设计视图中打开查询来访问 SQL)。
  • 感谢您的回复!现在我只有两个表中的数据。我应该只运行一个查询将它们转换成 SQL 格式吗?
  • 您在帖子中提到了查询。即使他们没有工作,我认为你应该发布他们,同时解释他们为什么不做你想做的事。回答您的问题可能需要比您提供的更精确的细节;希望查看 SQL 是获取该信息的一种方式。
  • 我在想也许可以做出某种 if then 语句来说明 if call id 显示重复 THEN match Call ID... 它必须匹配两者,当原始位置摘要报告时已上传,它有 283 条记录,但它显示重复的位置分组到另一个字段 (#_of_Occurances),所以调用的总数将是位置详细信息报告中的总数,在这种情况下是 288。所以当我运行第一个 qry - 305 结果,第二个 qry 将 305 变为 337。所以我最终得到了很多我猜的重复项,或者是空值
  • 但是这两个报告都没有包含 Call ID 或 Call Numbers。他们共享的唯一信息是 LONG 和 LAT 坐标。所以我必须先匹配这些,然后将呼叫 ID、日期和城市分配给相应的坐标。

标签: sql ms-access merge ms-access-2010


【解决方案1】:

认为您需要学习如何使用GROUP BY 语句来聚合您的表。这些链接可能会有所帮助:

您的表格设计也可能需要修改,并且可能还需要修改您添加到通话记录的方法。

很抱歉,我只是向您提供一些链接,但我不太愿意分析您所获得的内容以构建完整的答案,无论如何我认为您必须解决这些领域的问题学习。

【讨论】:

  • 感谢您的快速回复!最近几天我每天工作 20 小时,所以我为无法回复而道歉。您发送的群组链接似乎可以帮助我将数据送到需要的地方。我只需要弄清楚如何获取大于一的 [# of Occurrences] 字段中的数据,复制整行,将值更改为 1(甚至完全删除)并创建一个新表更新的数据,所以我可以在两个表上拥有相同数量的行。然后将它们分组。
  • 我认为您需要删除表 location summary 并将其替换为处理分组的查询。如需更准确的说明,我们可能需要您发布示例数据(可能就像为 stackoverflow.com/q/4379559/122139 所做的那样)。
  • 发布示例数据的最佳方式是什么,是使用数据库图片更好还是有办法格式化图表?
  • 这样说吧,我相信我想在这里做的方式有点复杂,而且想多了。我想我可能已经找到了一种方法来简化我的要求和我想要完成的事情......基本上这就是我想出的我想做的......我想合并两张表。两者都有不同的列数...如果 [date] 和 [call ID] 匹配,然后将两个表中的数据组合成一个包含更多信息的表。可以通过查询来完成吗?然后转换成表格?
猜你喜欢
  • 1970-01-01
  • 2021-06-26
  • 2018-12-10
  • 2020-12-10
  • 2017-10-12
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多