访问查询不允许对数据进行编辑

时间:2019-10-14 14:55:27

标签: sql ms-access one-to-many

我有一个表格,用于跟踪呼叫中心和呼叫者之间的通信。它具有多个字段和一个备注字段,可以在其中输入注释。我还有一个自动化过程,该过程与客户端传输数据,如果进行了地址更新,它将添加一个通讯说明,说明该地址是什么以及更改原因。我遇到的问题是我们从两个来源获取数据,很多时候这两个来源都包含同一个人。通常,两个地址之间的差异很小(街道与街道),这导致每个月创建多个记录。负责此客户的分析师有一个查询,可查看存在多个更改(特别是由自动普查创建的更改)的记录,以便他们可以查看哪些重复和合法。我希望他们能够选中一个框或以某种方式将这些记录标记为要删除。

问题在于,生成的查询不可编辑,因为帮助提要查询的查询使用了count函数,因此它不一定与表一对一的关系。这是第一个查询:

SELECT tblCommunications.RecordID, Count(tblCommunications.RecordID) AS CountOfRecordID
FROM tblCommunications
WHERE (((tblCommunications.CallComments) Like "*Updated address via Census feed.*"))
GROUP BY tblCommunications.RecordID;

第二个查询对第一个查询执行LEFT JOIN,并仅显示CountofRecordID大于4的那些记录的表数据。但是,此最终列表无法编辑,因此该复选框我添加了标记为删除的对象,因此无法检查。

有人知道我该如何做这项工作,或者对如何进行这项工作有更好的主意吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

与其在LEFT JOIN中使用聚合查询,不如在IN条件中使用WHERE子句。下面应该可以更新。请注意查询包含表别名,以避免重复长表名。此外,还集成了HAVING子句。根据需要进行调整。

SELECT t.RecordID, t.CallDate, t.Analyst, t.CallComments  
FROM tblCommunications AS t
WHERE t.RecordID ID IN
  (SELECT c.RecordID
   FROM tblCommunications AS c
   WHERE (((c.CallComments) LIKE "*Updated address via Census feed.*"))
   GROUP BY c.RecordID
   HAVING COUNT(c.RecordID) > 4)