【发布时间】:2015-02-13 18:05:52
【问题描述】:
我有以下 2 个表,我正在尝试更新子类别表中的 CategoryID 外键字段。一个类别可以有多个子类别,所以这里的关系是一对多的。
我尝试在查询设计视图中执行此操作。我尝试用于更新的标准如下:
类别名称以数字开头,例如 106 包装材料。此类别的子类别将以相同的三位数字开头,例如 106 纸板、106 泡泡纸等。
由于我有一个很长的子类别列表,我尝试使用更新查询,将类别 ID (Categories.ID) 输入到子类别表 (subcategories.CategoryID) 的 categoryID 列中,其中前 3 位数字是一样。
所以在上面的示例中,如果 106 包装材料在类别表中的 ID 为 1,则 106 纸板和 106 气泡膜在其 categoryID 字段中将具有“1”。
我知道我可以使用 Left(categoryname,3) 来提取要比较的数字,但不知道如何构造更新语句来完成此操作,或者将其放置在何处。
所以我最终想要的结果是所有子类别都有一个对应的 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)));
这是设计视图中的相同查询:
但这是它返回的结果:
【问题讨论】:
标签: sql ms-access sql-update foreign-keys ms-access-2010