3

次のようなテーブルの親とテーブルの息子があります。

Parent
ID   Name
1    Parent1
2    Parent2

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

親を選択するときに、1 つの列ですべての子の 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 に答える