Access 2010-Update中基于匹配字段的更新查询

Update Query in Access 2010-Update based on matching fields

我是一家小公司的实习生,正在对用于跟踪客户、工作等的 15 年前的访问数据库进行一些修复。我正在尝试编写更新查询并且可以' 似乎开始按照我需要的方式工作。这是我的位置。

我有两个 table。一个包含公司信息。另一个包含联系信息。公司table的主键也在联系人table中,为一对多关系。例如,如果一家公司有 3 个联系人,则来自公司 table 主键的 CompanyID 号码与联系人 Table.

中的三个联系人相关联

好的。现在的问题是在一个名为 "Company" 的表单中有一些遗留代码,它同时搜索联系人和公司。问题是联系人 table 中有一个名为 "ContactCompany" 的字段正被这个旧的搜索功能使用。如果用户使用表单更改公司名称,公司名称会在公司 table 中更新,但不会在联系人 table.

中更新

我决定使用更新查询来同步两个表单上的公司名称信息。我试图设计它,以便如果 ID 号在 table 之间匹配,Company table 中的公司名称将被复制到联系人 table 中。我的代码如下:

UPDATE Company INNER JOIN Contacts ON (Company.ID = Contacts.CompanyID) AND (Company.ContactCompany = Contacts.ContactCompany) SET Contacts.ContactCompany = [Company].[ContactCompany] WHERE (([Contacts].[CompanyID]=[Company].[ID]));

当我 运行 查询 Access 告诉我它正在更新 X 条记录,但记录没有更新。

请注意,我使用了查询生成器; SQL 代码是在我进入 SQL 视图时由访问自动生成的。

我对VB不是很有经验;我所有的知识都来自谷歌搜索。如果有人可以给我一些关于我做错了什么或如何进行的指示,我将不胜感激。谢谢!

因为在您的加入条件中,您选择的 Contact.ContactCompany 已具有相同的 ContactCompany 名称。

AND (Company.ContactCompany = Contacts.ContactCompany)

删除 "AND" 部分,您的查询应如下所示。

UPDATE Company 
INNER JOIN Contact ON Company.ID = Contact.CompanyID 
SET Contact.ContactCompany = [Company]![ContactCompany] 
WHERE (([Contact]![CompanyID]=[Company]![ID]));

P.S。确保在更新之前备份了数据库

我使用 Access 的查询帮助

你不需要AND (Company.ContactCompany = Contacts.ContactCompany)你已经在说那些现在不同了。

UPDATE Company 
INNER JOIN Contact 
      ON Company.CompanyID = Contact.CompanyID 
SET Contact.CompanyName = [Company].[CompanyName];

您可以添加此行以仅更新那些不同的

WHERE Contact.CompanyName <> = [Company].[CompanyName]