Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Grupuj wyniki PHP/MySQL według kolumny

Jak mluebke skomentował, użycie GRUPY oznacza, że ​​otrzymujesz tylko jeden wynik dla każdej kategorii. W oparciu o listę, którą podałeś jako przykład, myślę, że chcesz czegoś takiego:

$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 następnie przejdź przez tablicę. Przykład:

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

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

}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj ostatni odrębny zestaw rekordów

  2. Składnia bazy danych SQL ALTER – wymienione przez DBMS

  3. Najlepszy sposób na usunięcie wartości z pola SET?

  4. Konwertuj bazę danych MySQL z łaciny na UTF-8

  5. MySQL 8 ignoruje długości całkowite