我在C#应用程序中使用SQL Server Compact版来存储数据。对于我的Datagrid,我需要在一行中显示属于它的TITLE和TAGS(用,
分隔)。
在MySQL中有一个GROUP_CONCAT()
函数可以产生我想要的结果。不幸的是SQL Server CE没有这样的功能,所以我希望这里的某个人有解决这个问题的解决方法/解决方案。
Article ArticleTags Tags
+-------------+----------+ +------------+----------+ +----------+---------+
+ ARTICLE_ID + TITLE + + ARTICLE_ID + TAG_ID + + TAG_ID + Name +
+-------------+----------+ +------------+----------+ +----------+---------+
+ 1 + A + + 1 + 20 + + 20 + Sport +
+ 2 + B + + 1 + 21 + + 21 + Web +
+ 3 + C + + 1 + 22 + + 22 + Nature +
+-------------+----------+ + 3 + 23 + + 23 + Girls +
+------------+----------+ +----------+---------+
我需要以下结果:
+------------+----------------------+
+ TITLE + TAGS +
+------------+----------------------+
+ A + Sport, Web, Nature +
+ B + +
+ C + Girls +
+------------+----------------------+
答案 0 :(得分:0)
试试这个:
SELECT a.title, tags.tagNames
FROM (
SELECT t.article_ID article_ID,
STUFF(
(SELECT ', ' + p.name
FROM articletags t2
inner join tags p on (t2.tag_id=p.tag_id)
WHERE t.article_ID = t2.article_ID
FOR XML PATH (''))
, 1, 2, '') AS tagNames
FROM articletags t
GROUP BY article_id) tags
right JOIN article a on (tags.article_id = a.article_id)