1

ちょっと私は、次のことが可能かどうか疑問に思っています

select id, name, (select name from secondTable where companyId = tableOne.id) as concatenatedString..
from tableOne

したがって、私が探している選択は、tableOne で返される各レコードに対して、別のテーブルでルックアップを実行し、このレコード ID のすべての値を返すことです。(他のテーブルはルックアップ テーブルであるため、各 ID には 1 つ以上のエントリが含まれる場合があります)。サブクエリで複数の値が返され、コンマで区切られた単一の文字列値が作成される場合。

つまり、戻りデータは次のようになります

1  Microsoft Bill,Gate,Jack
2  Apple     Jobs
4

2 に答える 2

1

FOR XML PATHコンストラクトを使用したい:

select 
    ID, 
    Name,
    stuff((select ', ' + Name
           from secondTable where companyId = tableOne.id 
           for xml path('')),
          1,2,'') [Names]
from tableOne

関数は、最後に追加されるSTUFFファイナルを取り除くことです。', '

ここで別の例も見ることができます:

于 2011-08-29T15:59:24.387 に答える
0

クエリがはるかに柔軟になるため、結合をスキップする理由がわかりません。副選択を使用することに熱心な場合は、副選択をテーブルにすることでこれを行うことができます。

SELECT t1.id, t1.name, t2.name
FROM   tableOne t1
INNER JOIN (select id, name from secondTable) AS t2
on t1.id = t2.id

もちろん、IDで参加するだけなら、安倍の答えはもっと理にかなっています。

複数の列が返される場合に選択を集約する場合は、GROUP BY t1.id、t1.nameを使用できます。

于 2011-08-29T15:58:56.883 に答える