1

私は2つのテーブルを持っています:

Names(id, name) Addresses(id, name_id, address)

私を返すクエリを書きたい:名前、アドレスリスト(アドレス1、アドレス2、アドレス3、..)

何かのようなもの:

Select A.name, B.list_of_addresses
From Names A
    Inner Join (Select name_id, /*list_of_addresses with comma between them*/
                From Addresses
                Group By name_id)  B ON A.id=B.name_id
4

1 に答える 1

6

For XML をトリックとして使用して、SQL Server 2005 以降でそれを実現できます。

Select
    A.name,
    stuff((
        select ',' + B.address
        from Addresses B
        WHERE A.id=B.name_id
        for xml path('')),1,1,'')
From Names A

アドレスにまだコンマが含まれていない場合はうまく機能しますが、コンマが含まれていたとしても、リクエストはそれらの間にコンマを入れることであるため..これはおそらく「正しい」ものです。

于 2011-01-24T21:46:07.343 に答える