1列

2012-05-04 3 views
1

上の子レコードを取得し、私はテーブルの親と、このようなテーブルの息子を持っている:1列

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 

私は息子との文字列を生成するための関数を構築すると思ったが、誰かが良いアイデアを持っていますか?これについて

答えて

3
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-Data

+0

が完璧です。ありがとう! – Diego

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;