我将软件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));
由于它是一个公共数据库,我可以向任何感兴趣的人提供数据库的副本。
非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
您可能希望删除<>False
以及一些额外的括号。这不是你真正的问题,但它有助于提高可读性。不,发生的事情是你的谓词有效倒退 - 你试图将更长的问题与更短的答案进行比较。将where子句切换为WHERE Main.Program_Category_Class like Category.CategoryName + '%'
,看看是否有帮助
此外,当新字段名为Main.category
时,您正尝试更新Main.CategoryID
。
为了将来参考,请考虑这些常见的有用后续提供:那么你的意思是什么,你没有得到任何结果?查询是否抱怨它无效(如果字段名称有问题,它应该是哪个),还是没有更新任何行?