Maison > base de données > tutoriel mysql > Comment puis-je regrouper les résultats MySQL par plusieurs champs et afficher les données associées ?

Comment puis-je regrouper les résultats MySQL par plusieurs champs et afficher les données associées ?

Patricia Arquette
Libérer: 2024-11-06 12:50:03
original
1019 Les gens l'ont consulté

How Can I Group MySQL Results by Multiple Fields and Display Associated Data?

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

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

Solution:

  • Requête MySQL: Grâce à la fonction GROUP_CONCAT, nous pouvons concaténer les valeurs uniques du champ « Nom » pour chaque valeur unique « Groupe » :
<code class="sql">SELECT
p.Group as 'group',
GROUP_CONCAT(name) as names
FROM prueba p
GROUP BY p.Group</code>
Copier après la connexion
  • Implémentation PHP : Pour afficher les résultats dans un tableau HTML, nous pouvons récupérer les données de la requête et les traiter en utilisant PHP :
<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>
Copier après la connexion

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

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