2016-11-20 5 views
0

私の接合テーブルとカテゴリテーブルから "CategoryName"を選択している次のクエリがあります。Select Statementは、接合テーブルの値を1つのカンマ区切り文字列に変換します。

SELECT CategoryName 
FROM BND_ListingJunction_testing j 
JOIN BND_ListingCategories c ON c.CatID = j.Junc_CatID 
WHERE j.Junc_LID = 3 

SQLでは、これは正常に動作し、LIDがジャンクションテーブル内で一致するカテゴリのX行を表示します。

しかし、私のWebアプリケーションでは、トークンを作成するときに最初の結果しか読み取れません。 X行の結果セットをプルしてカンマ区切りの1行にすべて表示することは可能ですか?

たとえば、LID = 1のカテゴリが5回ある場合、上記のクエリは、私のジャンクションテーブルに存在するカテゴリごとに1つずつ5行を返します。

私は(1列で)次のようになり、結果セットしたいのです:再び私は例として5を使用してい

1 Category1 
2 Category2 
3 Category3 
4 Category4 
5 Category5 

Category1, Category2, Category3, Category4, Category5 

代わりのをレコードは1-Xカテゴリから任意の場所に配置できます。

--- UPDATE

私は初めに結果のみ1の間、動作しているようですが、追加されることはありません、以下を試してみました。

Declare @Cats as Nvarchar(max) = ',' 
Select @Cats = @Cats + CategoryName 
From BND_ListingJunction_testing j 
JOIN BND_ListingCategories c on c.CatID = j.Junc_CatID 
Where j.Junc_LID = 3 

Print(@Cats) 
+1

可能な重複[SQLで同じIDを持つ多くの行を連結するには?](http://stackoverflow.com/questions/35172956/how-to-concatenate-many-rows-with-same-id -in-sql) – Serg

答えて

1

SQL Serverでは、XML PATHステートメントを使用して、複数の行をシリアル文字列集計に変換できます。

Postgresには、はるかに使いやすい 'string_agg()'集約関数があります。

+0

クエリの最後に 'FOR XML Path'を追加すると、&<カテゴリ名>&タグを削除するだけで値を表示できますか? – UserSN

+0

あなたのWebアプリケーションコードは表示されていないので、あなたの質問には本当に対処できません。実際には、行を連結することとは全く異なる質問のように聞こえます。 –

+0

私のWebアプリケーションは、私にSQLクエリを挿入する領域を与えます。 'FOR XML Path'を追加すると、SQL Management Studioを使用すると、すべての行が1つにまとめられますが、コンマで区切られた文字列で値が必要なXML書式が追加されます。 – UserSN

0

これは私の望む結果を達成しました。

SELECT CategoryName + ', ' AS [text()] 
FROM BND_ListingJunction_testing j 
JOIN BND_ListingCategories c on c.CatID = j.Junc_CatID 
WHERE Junc_LID=2 
FOR XML PATH ('') 
関連する問題