通过从关系表中的主表中查找文本来更新Relation ID col

时间:2011-07-05 11:13:49

标签: sql select sql-update sql-like

我将软件PAD文件数据库从http://paddatabase.net/download.html导入到Microsoft Access中名为main的表中:

MAIN
-----
ID
ProgramName
Program_category_Class
CategoryID <- I created this to create a one to many relation with a new table Category
.
.

我创建了两个新表:category和subcategory。

Category
--------
ID
CategoryName

我将:: delimiter左侧的Program_Category_Class字段中的所有值提取到表类别中。 Program_Category_Class中的数据如下所示:

Program_Category_Class
Business::Accounting & Finance
Games & Entertainment::Action
Business::Accounting & Finance
Business::Databases & Tools

我想要做的是创建一个SQL查询,它使用类别表中的类别ID更新MAIN表,该类别是Program_Category_Class上的LIKE(左)匹配。然后,我将修改子类别表的右侧匹配的查询。

我尝试过这样的事情却没有结果:

UPDATE Main SET Main.category = (SELECT Category.ID
FROM Category
WHERE Category.CategoryName LIKE Main.Program_Category_Class+'%')
WHERE (((Exists (SELECT Category.ID
FROM Category
WHERE Category.CategoryName LIKE Main.Program_Category_Class+'%'))<>False));

由于它是一个公共数据库,我可以向任何感兴趣的人提供数据库的副本。

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您可能希望删除<>False以及一些额外的括号。这不是你真正的问题,但它有助于提高可读性。不,发生的事情是你的谓词有效倒退 - 你试图将更长的问题与更短的答案进行比较。将where子句切换为WHERE Main.Program_Category_Class like Category.CategoryName + '%',看看是否有帮助 此外,当新字段名为Main.category时,您正尝试更新Main.CategoryID

为了将来参考,请考虑这些常见的有用后续提供:那么你的意思是什么,你没有得到任何结果?查询是否抱怨它无效(如果字段名称有问题,它应该是哪个),还是没有更新任何行?