Access / SQL Update查询帮助[如果声明问题]

时间:2017-06-09 15:00:54

标签: sql ms-access

我正在开发一个包含两个不同表的数据库,这些表需要匹配和更新的记录。基本上,如果两个字符串字段彼此相等,则更新不同的字段。

我无法理解这一切。

第一个表 IngredientDB 包含两个字符串字段, Item Number Ingredient Name

第二个表 Table Material Label 还包含两个字符串字段, MaterialCode { {1}}

MaterialDescriptionIngredient Name有很多相同的记录,但并非所有记录都相同。我希望能够

  • 匹配MaterialDescriptionMaterialDescription
  • Ingredient Name更新为与项目编号完全相同 对应于MaterialCode

所以我尝试使用更新查询和if语句,这就是它的样子:

  • 字段:MaterialCode
  • 表:表材料标签
  • 更新至:iif([MaterialDescription] = [成分名称],[项目编号],“NotFound”)
  • 标准:BLANK
  • 或:BLANK

目前的问题是,所有Ingredient Name条记录都填满了“未找到”,这意味着由于某种原因它没有找到任何匹配...

有没有更简单的方法来完成所有这些?我错过了什么吗?对不起,对于Access的东西,我是一个新手。还在学习!

修改 这是我目前所在的image 。箭头表示我想要改变的东西。

来自图片的代码,目前收到语法错误

MaterialCode

2 个答案:

答案 0 :(得分:1)

根据您的“我希望能够”列表,正确的SQL将是:

UPDATE [Table Material Label] INNER JOIN [IngredientsDB] 
ON [Table Material Label].[MaterialDescription] = [IngredientsDB].[Ingredient Name] 
SET [Table Material Label].[MaterialCode] = [IngredientsDB].[Item Number];

如果您想在这些字段中将MaterialDescriptionIngredient NameJOIN匹配,则可以设置MaterialCode = Item Number

答案 1 :(得分:0)

这取决于您使用的访问版本。 我不太熟悉访问的前端部分,但是如果您从设计器中单击更新查询,则右键单击查询您选择的SQL视图。 根据您提供的信息,您需要以下内容 UPDATE Table Material Label JOIN 'other table' on Table Material Label.'Here you would put your value that is found on both tables' = 'Other table'.'that column that contains the value' SET MaterialCode = Item Number WHERE MaterialDescription = Ingredient Name

哪个应该可以解决问题。就像我说的那样,我不是一个访问者,我是一个年轻的SQL人哈哈。

这篇文章http://www.fmsinc.com/microsoftaccess/query/snytax/update-query.html#Update_Query_Examples 应该提供进一步的帮助。

希望这有帮助!