首页 > 解决方案 > 从基于表的查询中排除数据对?

问题描述

我有一个庞大而混乱的设施数据库,其中有很多重复项。地址已经以如此随意的方式输入,我将进行许多查询以识别可能的重复项。我的目标是让每个查询识别可能的重复项,然后一个人实际浏览列表并将每个配对标记为“不重复”或“可能重复”。

当有人将设施对标记为不重复时,我想将该数据对记录在表中,以便当其中一个查询以其他方式返回该配对时,它会被排除在外。我不知道如何做到这一点。我目前正在使用 MS Access 进行 SQL 查询,并且具有基本的视觉基础知识。

它应该如何工作的示例 运行查询 1 以根据城市和公司名称查找重复项。它带回设施 1 和 2、3 和 4、5 和 6 可能重复。前两个配对是我需要修复的重复,但 5 和 6 确实是独立的设施。我点击记录,设施5和6不重复,将数据记录在一个表中。当查询 1 再次运行时,它不会返回 5 和 6 可能重复。

作为参考,地址重复看起来像这样,这就是为什么需要多个查询

Frank's Garage, 123 2nd St
Frank's Garage LLC, LLC, 123 Second st
Frank's Garage and muffler, 123 2nd Street
Frank's, 12 2nd st

任何帮助深表感谢!

标签: sqldatabase-designms-access-2010

解决方案


我知道解决此问题的唯一方法是创建一个公司名称主表,并将此表 PK 与原始表中的记录相关联。审查记录并从主记录中消除重复并将重复组的剩余 PK 与原始记录相关联(如您所见)将是一个困难而乏味的过程。

从原始表创建 DISTINCT 公司的主表和地址数据。包括自动编号字段以生成密钥。连接公司/地址字段上的表并使用此键更新原始表中的字段。在原始表中有另一个字段来接收替换外键。

在主表中有一个数字字段(ReplacementPK)。排序和查看记录并输入您要为公司/地址重复组保留的密钥。在原始关键字段上构建查询连接表,使用从主选择的 ReplacementPK 更新原始表中的 NewFK 字段。

当一切看起来不错时:
从原始表中删除公司和地址以及原始 FK 字段。
从主库中删除 PK 与 ReplacementPK 不匹配的记录。


推荐阅读