2017-11-08 6 views
0

私は3つのテーブルを連結するための助けを必要とする:SQL - XMLのPATH( '' =

Table1    Table 2 (Rel)    Table 3 
ID Desc   IDTable1 IDTable3   ID  Descr 
1 desc1    1   1    1  Nome1 
2 desc2    2   1    2  Nome2 
3 desc3    3   1 
         1   2 
         3   2 

結果は以下の通りです:

New Table 
    CName  Cname2 
    Nome1   desc1,desc2,desc3 
    Nome2   desc1,desc3 

私は、このようにしてみました:

Select t3.descr, 
    STUFF((SELECT '\n' + t1.desc as [text()] from Table1 t1 inner join Table2 t2 on t1.ID = t2.idtable1 
    inner join Table3 t3 on t3.ID = t2.IDTable3 order by t1.Desc FOR XML PATH('')), 1, 1, '') AS Cname2 
from Table3 t3 inner join Table2 t2 on t3.ID = t2.IDTable3 
where IDTable1 = '9A02C9C1-76B9-E711-A964-005056B10019' 
group by t3.descr 

私はそれを試みましたが、結果は次のとおりです:

New Table 
    CName  Cname2 
    Nome1   desc1,desc2,desc3,desc1,desc3 
    Nome2   desc1,desc2,desc3,desc1,desc3 

私を助けることができますか?

答えて

0

ソリューション内でt3エイリアスが2回あるため、サブクエリは外部クエリに依存しません。これが、値Descrの値の同じリストを持つ理由です。それはサブクエリで使用することができますので、私はあなたのGROUP BYt3.IDを追加した

Select t3.descr, 
    STUFF(
     (SELECT '\n' + t1.desc as [text()] 
     from Table1 t1 
     inner join Table2 t2 on t1.ID = t2.idtable1 
     where t3.ID = t2.IDTable3 
     order by t1.Desc 
     FOR XML PATH('')), 1, 1, '') AS Cname2 
from Table3 t3 
inner join Table2 t2 on t3.ID = t2.IDTable3 
where IDTable1 = '9A02C9C1-76B9-E711-A964-005056B10019' 
group by t3.ID, t3.descr 

:私はあなたがそれをこのような何かをしたいと思います。

+0

ありがとうございます!走っています.... – Alexgr79

+0

@ Alexgr79よろしくお願いします! –

関連する問題