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 サイトの他の関連記事を参照してください。