データベース タスクでは、データ フィールドをカンマ区切りのリストに連結することが頻繁に必要になります。 SQL は効率的なソリューションを提供し、手続き型コードの必要性を排除します。
例: Applications
(id, name)、Resources
(id, name)、および ApplicationsResources
(id, app_id, resource_id) の 3 つのテーブルを想像してください。目的は、各リソース名と関連するアプリケーションのカンマ区切りリストを示すレポートを生成することです。
これは、GROUP_CONCAT
(MySQL および一部の SQL Server バージョン) または STRING_AGG
(SQL Server 2017 以降) を使用して実現できます。これらの関数は、特定の列でグループ化された値を効率的に連結します。
MySQL/一部の SQL Server バージョン:
<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 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 は、LISTAGG
や DBMS_PCL_ROWPKT
パッケージなど、いくつかの文字列集計メソッドを提供しています。詳細な手順については、Oracle のドキュメントを参照してください。
この SQL ベースのアプローチは、データベース クエリ内で直接カンマ区切りリストを生成する合理的な方法を提供し、アプリケーションや GUI でのデータ表示を改善します。
以上がSQL を使用してリレーショナル データベース テーブルからカンマ区切りリストを効率的に作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。