Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP/MySQL gruppiert Ergebnisse nach Spalte

Wie mluebke kommentierte, bedeutet die Verwendung von GROUP, dass Sie nur einen erhalten Ergebnis für jede Kategorie. Basierend auf der Liste, die Sie als Beispiel gegeben haben, denke ich, dass Sie so etwas wollen:

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

Und dann durch das Array schleifen. Beispiel:

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

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

}