ホームページ >データベース >mysql チュートリアル >T-SQL で複数のレビューに関連付けられたユーザー名をグループ化して連結する方法

T-SQL で複数のレビューに関連付けられたユーザー名をグループ化して連結する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-15 09:23:43780ブラウズ

How to Group and Concatenate User Names Associated with Multiple Reviews in T-SQL?

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 でグループ化し、ReviewIDReviewDate、および関連付けられたユーザーの名をカンマ区切りでリストした単一行で各レビューが表される統合出力を生成します。 これは、各レビューに関連する複数のユーザー名を 1 つのレコードに結合する必要性に直接対処します。

以上がT-SQL で複数のレビューに関連付けられたユーザー名をグループ化して連結する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。