我有以下查询选择" CategoryName"来自我的Junction表和Category表。
SELECT CategoryName
FROM BND_ListingJunction_testing j
JOIN BND_ListingCategories c ON c.CatID = j.Junc_CatID
WHERE j.Junc_LID = 3
在SQL中,这可以正常工作,并为LID在我的联结表中匹配的任何类别显示X行。
我的Web应用程序只是在创建令牌时才读取第一个结果。是否可以为X行提取结果集并将它们全部显示在以逗号分隔的1行中。
例如:如果LID = 1已经是类别5次,则上述查询将为我的联结表中存在的每个类别返回5行。
我想要一个看起来像这样的结果集(在一列中):
Category1, Category2, Category3, Category4, Category5
而不是:
1 Category1
2 Category2
3 Category3
4 Category4
5 Category5
我再次以5为例,一个记录可以有1-X类别。
--- UPDATE
我尝试了以下似乎有效但不添加a的结果,在开头只有1个结果。
Declare @Cats as Nvarchar(max) = ','
Select @Cats = @Cats + CategoryName
From BND_ListingJunction_testing j
JOIN BND_ListingCategories c on c.CatID = j.Junc_CatID
Where j.Junc_LID = 3
Print(@Cats)
答案 0 :(得分:0)
对于SQL Server,您可以使用XML PATH语句将多行转换为串行字符串聚合。
Postgres有一个'string_agg()'聚合函数,它更容易使用。
答案 1 :(得分:0)
这完成了我想要的结果。
SELECT CategoryName + ', ' AS [text()]
FROM BND_ListingJunction_testing j
JOIN BND_ListingCategories c on c.CatID = j.Junc_CatID
WHERE Junc_LID=2
FOR XML PATH ('')