Maison >base de données >tutoriel mysql >Comment regrouper les résultats MySQL par données de champ : un guide complet
Regroupement des résultats MySQL par données de champ : une approche globale
Lors de l'organisation des données dans une base de données MySQL, il devient souvent nécessaire de regrouper les résultats en fonction sur des valeurs de champs spécifiques. Ceci peut être réalisé à l'aide de requêtes SQL ou de code PHP.
Utilisation de requêtes SQL
Pour le premier exemple, où vous souhaitez regrouper des données en fonction du « Groupe » champ, vous pouvez utiliser une simple requête SQL comme celle-ci :
SELECT Group, GROUP_CONCAT(Name) AS Names FROM table_name GROUP BY Group
Cette requête concatènera tous les noms associés à chaque groupe à l'aide de la fonction GROUP_CONCAT() et renverra les résultats regroupés par le champ "Groupe".
Utilisation de PHP
Si vous préférez utiliser PHP, vous pouvez vous connecter à la base de données et exécuter la requête comme suit :
<code class="php">$dbc = new MySQLi(DBHOST, DBUSER, DBPASS, DB); $result = $dbc->query("SELECT Group, GROUP_CONCAT(Name) AS Names FROM table_name GROUP BY Group"); while ($row = $result->fetch_assoc()) { $names = explode(",", $row["Names"]); echo "<tr><td>{$row["Group"]}</td><td>{$names[0]}</td></tr>"; // Print the first name foreach ($names as $name) { // Print remaining names echo "<tr><td></td><td>{$name}</td></tr>"; } }</code>
Groupes imbriqués avec plusieurs tables
Pour l'exemple plus complexe où vous avez plusieurs tables et des valeurs "coef" supplémentaires, vous pouvez utiliser une requête imbriquée ou une combinaison de SQL et PHP pour obtenir l'objectif souhaité. regroupement.
Solution PHP possible
Voici une solution PHP possible pour ce scénario :
<code class="php">$dbc1 = new MySQLi(DBHOST, DBUSER, DBPASS, DB1); $dbc2 = new MySQLi(DBHOST, DBUSER, DBPASS, DB2); $groups_query = "SELECT Group, GROUP_CONCAT(Name) AS Names FROM table1 GROUP BY Group"; $coefs_query = "SELECT meta_value, title, group FROM table2"; $groups_result = $dbc1->query($groups_query); $coefs_result = $dbc2->query($coefs_query); while ($group = $groups_result->fetch_assoc()) { echo "<tr><td>{$group["Group"]}</td><td>{$group["Names"]}</td></tr>"; $coefs_result->data_seek(0); // Reset pointer to beginning of coefs result set while ($coef = $coefs_result->fetch_assoc()) { // Loop through coefs result set if ($coef["group"] == $group["Group"]) { echo "<tr><td></td><td>{$coef["title"]}</td><td>{$coef["meta_value"]}</td></tr>"; } } }</code>
Cette solution combine une requête SQL pour récupérer les groupes et les noms, et utilise PHP pour parcourir les résultats et récupérer les coefs et les titres de la deuxième table.
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!