![](/img/trans.png)
[英]Microsoft Access 2010 - Updating Multiple Rows with Different values in ONE query
[英]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.