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条目。更多类别和相关子类别示例是:
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)));
这是设计视图中的相同查询:
但这是结果呢returns:
你可以试试这个:
更新类别,子类别 SET subCategories.CategoryID = [类别].[ID]
WHERE ((左([类别].[类别],3)=左([子类别].[子类别],3)));
为了使其正常工作,您需要确保类别中的三个数字是唯一的。如果多次出现相同的数字,则此更新将无法正常工作。
我有以下 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条目。更多类别和相关子类别示例是:
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)));
这是设计视图中的相同查询:
但这是结果呢returns:
你可以试试这个:
更新类别,子类别 SET subCategories.CategoryID = [类别].[ID] WHERE ((左([类别].[类别],3)=左([子类别].[子类别],3)));
为了使其正常工作,您需要确保类别中的三个数字是唯一的。如果多次出现相同的数字,则此更新将无法正常工作。