T-SQL: 複数のレビューからのユーザー名を結合する
複数の関連テーブルのデータを単一のカンマ区切り文字列に集約することは、データベース管理において頻繁に必要となる要件です。 この例では、特にレビュー、レビュー担当者、ユーザー間の多対多の関係を対象とした、これを実現するための T-SQL アプローチを示します。
サブクエリを使用した簡潔な解決策は、効果的な方法を提供します。
<code class="language-sql">SELECT r.ReviewID, r.ReviewDate, ( SELECT u.FName + ',' FROM @Users u INNER JOIN @Reviewers rs ON u.UserID = rs.UserID WHERE rs.ReviewID = r.ReviewID FOR XML PATH('') ) AS UserNames FROM @Reviews r</code>
内訳は次のとおりです:
@Reviews
: このテーブルにはレビューの詳細 (ReviewID、ReviewDate) が保存されます。@Reviewers
: このテーブルはレビューとレビュー担当者 (ReviewerID、ReviewID、UserID) をリンクします。@Users
: このテーブルにはユーザー情報 (UserID、FName、LName) が含まれます。SELECT
ステートメントは、@Users
と @Reviewers
を結合して、各レビューに関連付けられた名 (FName
) を取得します。FOR XML PATH('')
は、FName
値をカンマで区切って単一の文字列に効率的に連結します。このクエリは、結果を ReviewID
でグループ化し、ReviewID
、ReviewDate
、および関連付けられたユーザーの名をカンマ区切りでリストした単一行で各レビューが表される統合出力を生成します。 これは、各レビューに関連する複数のユーザー名を 1 つのレコードに結合する必要性に直接対処します。
以上がT-SQL で複数のレビューに関連付けられたユーザー名をグループ化して連結する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。