ホームページ >データベース >mysql チュートリアル >SQL で関連するアプリケーション名のカンマ区切りリストを作成するにはどうすればよいですか?

SQL で関連するアプリケーション名のカンマ区切りリストを作成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-18 22:16:12641ブラウズ

How to Create Comma-Separated Lists of Associated Application Names in SQL?

SQL クエリを使用してカンマ区切りリストを作成する

複数のテーブルにアプリケーションとリソースのデータが含まれている場合、一般的なタスクは、すべてのリソース名と関連するアプリケーション名をカンマで区切ってリストするテーブルをリストすることです。単一の SQL クエリを使用してこれを実現するには、次の手順に従います:

MySQL:

<code class="language-sql">SELECT r.name,
         GROUP_CONCAT(a.name SEPARATOR ',') AS application_names
    FROM RESOURCES r
    JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id
    JOIN APPLICATIONS a ON a.id = ar.app_id
GROUP BY r.name</code>

SQL Server (2005):

<code class="language-sql">SELECT r.name,
       STUFF((SELECT ',' + a.name
               FROM APPLICATIONS a
               JOIN APPLICATIONRESOURCES ar ON ar.app_id = a.id
              WHERE ar.resource_id = r.id
           GROUP BY a.name
            FOR XML PATH(''), TYPE).value('text()[1]','NVARCHAR(max)'), 1, LEN(','), '') AS application_names
 FROM RESOURCES r</code>

SQL Server (2017):

<code class="language-sql">SELECT r.name,
         STRING_AGG(a.name, ',') AS application_names
    FROM RESOURCES r
    JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id
    JOIN APPLICATIONS a ON a.id = ar.app_id
GROUP BY r.name</code>

Oracle: Oracle は、いくつかの文字列の集約/結合オプションを提供します。特定の構文と要件については、ドキュメントを参照してください。

これらのクエリは、「RESOURCES」テーブルを「APPLICATIONSRESOURCES」および「APPLICATIONS」テーブルと結合して、リソース名と関連するアプリケーション名を取得します。次に、「GROUP_CONCAT」、「STUFF」、または「STRING_AGG」関数を使用して、アプリケーション名を各リソースのカンマ区切りリストに連結します。 読みやすさを向上させるために、結果列にエイリアス application_names を追加しました。

以上がSQL で関連するアプリケーション名のカンマ区切りリストを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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