sql >> Databáze >  >> RDS >> Mysql

PHP/MySQL seskupuje výsledky podle sloupců

Jako mluebke s komentářem, použití GROUP znamená, že získáte pouze jeden výsledek pro každou kategorii. Na základě seznamu, který jste uvedl jako příklad, si myslím, že chcete něco takového:

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

A pak procházet polem. Příklad:

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

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

}


  1. Jak použít pole hodnot z PHP v klauzuli 'IN' dotazu mysql?

  2. Výjimka zaraženého SQL pro JDBC

  3. PostgreSQL, SELECT z max id

  4. Jaké jsou případy použití pro výběr CHAR před VARCHAR v SQL?