从主表上的选择匹配更新TAG关系表,其中关键字字段和标记表以及各个关键字

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

标签: sql select insert sql-like

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

MAIN
-----
ID
ProgramName
Keywords
.
.

我创建了两个新表:Tags和TagSoftwareRel。

Tags
--------
ID
Tag


TagSoftwareRel
--------------
ID
SoftwareID <- (MainTable)
TagID <- tags table

我从“关键字”字段中将所有关键字提取为“关键字”表格中的单个字词。他们来自Main的关键字字段如下所示:

Keywords
Paul, animated, moving monk, paulaner
Image,Imaging,Graphics,Rotate,Resize,Effects,
Sharpen,Blur,JPEG,TIFF,BMP,WBMP,PSD,GIF,PDF,Format,ICM,ICC,CMYK,
thumbnail,Convert,Display,AJAX,AVI,red-eye removal,lossless JPEG  transform     
correction, rich,internet,applications,ebooks,webmaster,authoring,

我想要做的是创建一个SQL查询,它通过使用where tags.tag(如main.keywords)将tags标签中的tagID插入tagsoftware.tagid,并将主表中的相关softwareID插入到tagsoftwarerel.softwareid中。 p>

我有点不知道从哪里开始。

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

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

1 个答案:

答案 0 :(得分:0)

我假设TagSoftwareRel中的字段ID是autovalue或identity。这意味着通过插入新行自动创建值: 我知道您已经填写了标签表。

这是一个填充TagSoftarerel-Table的查询:

Insert into TagSoftarerel (SoftwareID, TagID)
Select m.Id, 
       (Select T.TagId from Tag T where T.Tag = m.Keyword) as TagId 
from MAIN m 

<强>建议: 我想你可以找到更好的解决方案。标签信息在您的解决方案中是多余的。 如果您只是将Tag.Id添加到主表中,您可以删除关键字列并将标记信息仅存储在它所属的标记表中。