繁体   English   中英

Microsoft Access 2010更新查询-更新外键字段

[英]Microsoft Access 2010 update query - updating foreign key field

我有以下2个表,我正在尝试更新子类别表中的CategoryID外键字段。 一个类别可以有多个子类别,因此这里的关系是一对多的。

我试图在查询设计视图中执行此操作。我尝试用于更新的条件如下:

类别名称以数字开头,例如106包装材料。 此类别的子类别将以相同的三位数字开头,例如106硬纸板,106气泡包装纸等。

由于我的子类别列表很长,因此我尝试使用更新查询,以便在前三位数相同的子类别表(subcategories.CategoryID)的categoryID列中输入类别ID(Categories.ID)。

因此,在上面的示例中,如果106种包装材料在类别表中的ID为1,则106纸板和106气泡包装纸的类别ID字段将为“ 1”。

我知道我可以使用Left(categoryname,3)提取要比较的数字,但不知道如何构造他的update语句来完成此操作或将其放置在何处。

因此,我最终希望得到的结果是所有子类别都有对应的CategoryID条目。 还有更多类别和相关子类别示例:

  • 101文具(ID 2)-> 101笔记本,101笔,101书写板

  • 102手工艺(ID 3)-> 102颜料,102刷子

我非常感谢您的帮助,并且对SQL和访问功能还很陌生。

谢谢

表格及其关系

更新:

我尝试了以下sql

UPDATE subCategories INNER JOIN categories ON subCategories.categoryID = categories.ID SET subCategories.CategoryID = [Categories].[ID] WHERE ((Left([Categories].[Category],3)=Left([Subcategories].[Subcategory],3)));

这是设计视图中的相同查询:

查询设计

但这是它返回的结果:

查询结果

您可以尝试以下方法:

更新类别,子类别SET subCategories.CategoryID = [类别]。[ID]在哪里((左([类别]。[类别],3)=左([子类别]。[子类别],3))));

为了使其正常工作,您需要确保“类别”中的三个数字是唯一的。 如果多次出现相同编号,则此更新将无法正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM