Extraire des données dans un format spécifique, comme une liste séparée par des virgules, est une tâche courante. Supposons que vous ayez besoin de détails sur la publication et d'une liste de noms de sites associés, séparés par des virgules. Une approche naïve utilisant une sous-requête pourrait ressembler à ceci :
<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>
Cependant, cela produit un seul nom de site par ligne, et non une liste séparée par des virgules.
La clé pour créer la liste souhaitée séparée par des virgules est la fonction GROUP_CONCAT
. Cette fonction concatène plusieurs valeurs en une seule chaîne, séparées par des virgules (ou un séparateur personnalisé). 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>
Cette requête révisée utilise GROUP_CONCAT(s.name)
pour combiner les noms de sites. Le INNER JOIN
relie efficacement les tables publications
et sites
, et GROUP BY p.id, p.name
garantit que la fonction GROUP_CONCAT
regroupe correctement les noms de sites pour chaque publication.
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!