Génération de listes séparées par des virgules dans les résultats de requête MySQL
De nombreux utilisateurs de bases de données exigent des listes séparées par des virgules dans leurs requêtes MySQL. Bien que MySQL ne prenne pas directement en charge cela, la fonction GROUP_CONCAT
offre une solution simple.
Le problème
Imaginez une requête récupérant les données de publication et les noms de sites associés :
<code class="language-sql">SELECT p.id, p.name, (SELECT name FROM sites s WHERE s.id = p.site_id) AS site_list FROM publications p;</code>
Cela renvoie une colonne "site_list" avec un seul nom de site par publication. Nous avons plutôt besoin d'une liste séparée par des virgules.
La solution : GROUP_CONCAT
La fonction GROUP_CONCAT
concatène les valeurs d'une colonne. Voici la requête améliorée :
<code class="language-sql">SELECT p.id, p.name, GROUP_CONCAT(s.name) AS site_list FROM sites s INNER JOIN publications p ON s.id = p.site_id GROUP BY p.id, p.name;</code>
Ceci utilise un INNER JOIN
pour relier les tables "sites" et "publications", garantissant ainsi des associations site-publication correctes. GROUP_CONCAT(s.name)
concatène les noms de sites et GROUP BY p.id, p.name
regroupe les résultats par ID de publication et nom, créant ainsi la liste souhaitée séparée par des virgules dans la colonne "site_list". Cela fournit efficacement le résultat requis.
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!