我使用SQL Server 2008,我需要三个表,产品,产品标签和标签。
Products
-----------------
Id | Name
ProductTags
------------------
Id | ProductId | TagId
Tags
------------------
Id | Name
我正在尝试创建一个返回结果的查询,该结果包含第一列中的产品ID以及与第二列中连接的产品相关联的标记的名称,如下所示:
productid | Tags
-------------------------------------
1 tag1, tag2, tag3
2 tag2, tag3
我知道这可以通过FOR XML PATH('')
以某种方式完成,但我能说得对。使用FOR XML
并不重要。任何能产生结果的解决方案都可以。
答案 0 :(得分:2)
This article提供了一个很好的概述,您可以通过这种方法实现这一目标。
答案 1 :(得分:2)
SELECT
c.ID, c.Name ProductName,
STUFF(
(SELECT ',' + b.name
FROM ProductTags a
INNER JOIN Tags b
ON a.TagID = b.ID
WHERE a.ProductID = c.ID
FOR XML PATH (''))
, 1, 1, '') AS TagListList
FROM Products AS c
GROUP BY c.Name, c.ID