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

Microsoft Access 2010 update query - updating foreign key field

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

我试图在查询设计中做到这一点 view.The 我试图用于更新的标准如下:

类别名称以数字开头,例如 106 Packing material。此类别的子类别将以相同的三位数字开头,例如 106 cardboard、106 bubblewrap 等

因为我有一长串子类别,我正在尝试使用更新查询,将类别 ID (Categories.ID) 输入到子类别 table (subcategories.CategoryID) 其中前 3 位相同。

因此在上面的示例中,如果 106 包装 material 在类别 table 中的 ID 为 1,则 106 cardboard 和 106 bubblewrap 的类别 ID 字段中的值为“1”。

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

所以我最终想要的结果是所有子类别都有对应的CategoryID条目。更多类别和相关子类别示例是:

感谢您的帮助,我对 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)));

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

但这是结果呢returns:

你可以试试这个:

更新类别,子类别 SET subCategories.CategoryID = [类别].[ID] WHERE ((左([类别].[类别],3)=左([子类别].[子类别],3)));

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