Maison > Article > base de données > Comment puis-je regrouper les résultats MySQL par plusieurs champs et afficher les données associées ?
Résultats de groupe MySQL par données de champ : exploration de solutions pour la manipulation de données complexes
Dans cet article, nous abordons le défi du regroupement et de l'affichage résultats d'une base de données MySQL basée sur des données de terrain spécifiques. Plus précisément, nous visons à résoudre un scénario dans lequel la base de données est similaire à celui-ci :
ID Group Name 1 1 John 2 1 Andrea 3 1 Jack 4 2 Mike 5 2 Kurt 6 3 Alice
Problème d'origine : regroupement par un seul champ
L'exigence initiale est de présenter les données sous forme de tableau, regroupées par le champ "Groupe":
Group Name ----------------------- 1 John Andrea Jack ----------------------- 2 Mike Kurt ----------------------- 3 Alice -----------------------
Solution:
<code class="sql">SELECT p.Group as 'group', GROUP_CONCAT(name) as names FROM prueba p GROUP BY p.Group</code>
<code class="php">$result = $dbc->query(" SELECT p.Group as 'group', GROUP_CONCAT(name) as names FROM prueba p GROUP BY p.Group "); echo "<table border='1'><tr><th>Group</th><th>Name</th></tr>"; while($row = $result->fetch_assoc()){ $names = split(",",$row["names"]); echo "<tr><td rowspan='".count($names)."'>".$row["group"]."</td><td>".$names[0]."</td></tr>"; array_shift($names); foreach($names as $name){ echo "<tr><td> </td><td>".$name."</td></tr>"; } } echo "</table>";</code>
Problème avancé : regroupement par plusieurs champs
Le problème devient plus complexe lorsque nous introduisons plusieurs champs de regroupement, ainsi que des données supplémentaires associées à chaque groupe. Par exemple, considérons la base de données suivante :
ID meta_key meta_value name 1 group 1 John 2 group 1 Andrea 3 group 1 Jack 4 group 2 Mike 5 group 2 Kurt 6 group 3 Alice
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!