3

我有一个像这样的表父和表子:

Parent
ID   Name
1    Parent1
2    Parent2

Son
ID   ParentID
10      1
20      1
30      1
15      2
25      2

在选择父母时,最简单的方法是在单个列上获取所有儿子的 ID?像这样:

Result:
ID   Name      AllMySons
1    Parent1   10,20,30
2    Parent2   15, 25

我想构建一个函数来与儿子一起生成字符串,但有人有更好的主意吗?

4

2 回答 2

5
select P.ID,
       P.Name,
       stuff((select ','+cast(S.ID as varchar(10))
              from Son S
              where S.ParentID = P.ID
              for xml path('')), 1, 1, '') AllMySons
from Parent P

SE-数据

于 2012-05-04T09:52:07.687 回答
1

这个怎么样。

SELECT p1.id,
       p1.name,
       AllMySons = Replace ((SELECT s.id AS 'data()'
                             FROM   son s
                             WHERE  p1.id = s.parentid
                             FOR xml path('')), ' ', ', ')
FROM   parent p1
GROUP  BY p1.id,
          p1.name;  
于 2012-05-04T09:56:35.177 回答