Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP/MySQL regrouper les résultats par colonne

Comme mluebke commenté, utiliser GROUP signifie que vous n'en obtenez qu'un un résultat pour chaque catégorie. D'après la liste que vous avez donnée en exemple, je pense que vous voulez quelque chose comme ceci :

$sql = "SELECT * FROM products WHERE category IN (10,120,150,500) GROUP BY category ORDER BY category, id";
$res = mysql_query($sql);

$list = array();
while ($r = mysql_fetch_object($res)) {
  $list[$r->category][$r->id]['name'] = $r->name;
  $list[$r->category][$r->id]['whatever'] = $r->whatever;
  // etc
}

Et puis bouclez dans le tableau. Exemple :

foreach ($list as $category => $products) {
  echo '<h1>' . $category . '</h1>';

  foreach ($products as $productId => $productInfo) {
    echo 'Product ' . $productId . ': ' . $productInfo['name'];
    // etc
  }

}