循环遍历表中的逗号分隔标记,并在标记表中进行多对多关系匹配

时间:2016-03-20 19:28:23

标签: sql sql-server-2008

我在SQL Server 2008中有这三个表:

表1 - 某事

ID    Title    Tags
---------------------------
1     Test1    a, aa, b
2     Test2    a, b
3     Test3    b, bb

表2 - 标签

ID    Tag
----------
1     a
2     b
3     aa
4     bb

表3 - 多对多关系表btw Table1和Table2

ID    table1ID    table2ID

问题/问题:我需要一些SQL能够循环遍历每个Table1行的逗号分隔标记,在Table2(Tag)中搜索匹配,并将关系值插入Table3 ...就像这样结果:< / p>

表3 - 多对多关系表:

ID    t1ID  t2ID
-----------------
1     1     1
2     1     3
3     1     2
4     2     1
5     2     2
6     3     2
7     3     4

NB! 'a'和'aa','b'和'bb'之间没有匹配/关系,依此类推。只有'严格'匹配。

是的 - 当我在Table3中生成值时 - 我将删除Table1中的Tags-column(因为它不再是必需的)。

请帮忙。我是一个绝望的新手!

请原谅一个愚蠢和天真的新手 - 我试图寻找一个解决方案,但将这个问题转化为一个简单的搜索术语有点复杂 - 我可能忽略了类似的问题

1 个答案:

答案 0 :(得分:1)

试试这个:

Select * into Table3 from (
select ROW_NUMBER() over (ORDER BY Something.id, Tags.id) as id
, Something.id as t1ID 
, Tags.id as t2ID
from Something, tags
where ', ' + Something.tags + ',' like '%, ' + tags.Tag + ',%')