【发布时间】:2016-03-20 19:28:22
【问题描述】:
我在 SQL Server 2008 中有这 3 个表:
Table1 - 某事
ID Title Tags
---------------------------
1 Test1 a, aa, b
2 Test2 a, b
3 Test3 b, bb
Table2 - 标签
ID Tag
----------
1 a
2 b
3 aa
4 bb
Table3 - 多对多关系表 btw Table1 和 Table2
ID table1ID table2ID
问题/问题:我需要一些能够遍历每个 Table1 行的逗号分隔标签的 SQL,在 Table2(标签)中搜索匹配项,并将关系值插入到 Table3 中......像这样的结果:
Table3 - 多对多关系表:
ID t1ID t2ID
-----------------
1 1 1
2 1 3
3 1 2
4 2 1
5 2 2
6 3 2
7 3 4
注意! 'a' 和 'aa'、'b' 和 'bb' 等之间没有匹配/关系。只有“严格”匹配。
是的 - 当我在 Table3 中生成值时 - 我将删除 Table1 中的标签列(因为它不再需要)。
请帮忙。我是一个绝望的新手!
请原谅新手的愚蠢和幼稚——我已经尝试过寻找解决方案,但是将这个问题翻译成简单的搜索词有点复杂——我可能忽略了一个类似的问题
【问题讨论】:
-
如果你谷歌一下,很多例子和方法可以把逗号分隔成表格:例如来自这个网站stackoverflow.com/questions/5493510/…
-
谢谢 - 但我去过那里。而且我确实已经将 Table1 中的标签(commasep.)变成了 Table2。但现在我需要最后一步...... Table3:循环通过 Table1 - 在 Table2 中搜索匹配 - 如果有匹配则将关系值放入 Table3
-
抱歉,没注意到你已经翻过了。但不要在 SQL 中循环 - 它适用于数据集,因此您只需连接您的表和结果并使用它插入您需要/想要的任何表中。如果您不方便一次性完成,请使用公用表表达式和临时表。
-
别这样(对不起)。非常感谢您能花时间帮助我解决我疯狂的 sql 问题 :-) 非常感谢。
标签: sql sql-server-2008