Maison > base de données > tutoriel mysql > Comment créer efficacement des listes séparées par des virgules à partir de tables de bases de données relationnelles à l'aide de SQL ?

Comment créer efficacement des listes séparées par des virgules à partir de tables de bases de données relationnelles à l'aide de SQL ?

Mary-Kate Olsen
Libérer: 2025-01-18 22:09:10
original
968 Les gens l'ont consulté

How to Efficiently Create Comma-Separated Lists from Relational Database Tables using SQL?

Créer efficacement des listes séparées par des virgules à l'aide de SQL

Les tâches de base de données nécessitent souvent de concaténer des champs de données dans des listes séparées par des virgules. SQL offre des solutions efficaces, éliminant le besoin de code procédural.

Exemple : Imaginez trois tables : Applications (id, nom), Resources (id, nom) et ApplicationsResources (id, app_id, resource_id). L'objectif est de générer un rapport montrant chaque nom de ressource ainsi qu'une liste d'applications associées séparées par des virgules.

Cela peut être réalisé en utilisant GROUP_CONCAT (MySQL et certaines versions de SQL Server) ou STRING_AGG (SQL Server 2017 et versions ultérieures). Ces fonctions concatènent efficacement des valeurs regroupées par une colonne spécifique.

MySQL/Certaines versions de 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>
Copier après la connexion

SQL Server 2017 et versions ultérieures :

<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>
Copier après la connexion

Oracle :

Oracle propose plusieurs méthodes d'agrégation de chaînes, notamment LISTAGG et le package DBMS_PCL_ROWPKT. Consultez la documentation Oracle pour des instructions détaillées.

Cette approche basée sur SQL offre une méthode simplifiée pour générer des listes séparées par des virgules, directement dans vos requêtes de base de données, améliorant ainsi la présentation des données dans les applications et les interfaces graphiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal