Mysql
 sql >> Database >  >> RDS >> Mysql

PHP/MySQL raggruppa i risultati per colonna

Come mluebke commentato, usare GROUP significa che ne ottieni solo uno risultato per ogni categoria. Sulla base dell'elenco che hai fornito come esempio, penso che tu voglia qualcosa del genere:

$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
}

E quindi scorrere l'array. Esempio:

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

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

}