【问题标题】:Microsoft Access 2010 update query - updating foreign key fieldMicrosoft Access 2010 更新查询 - 更新外键字段
【发布时间】: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


    【解决方案1】:

    你可以试试这个:

    更新类别、子类别 SET subCategories.CategoryID = [类别].[ID] WHERE ((Left([Categories].[Category],3)=Left([Subcategories].[Subcategory],3)));

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

    【讨论】:

    • 嗨,我试过了,但总是出现语法错误?这个sql应该在access数据库上工作吗?一位同事认为它看起来像 sql server 语法。抱歉,我对这一切都很陌生!
    • 很抱歉。我已经编辑了使用访问权限的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    相关资源
    最近更新 更多