Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tab silang dinamis MySQL

Jumlah dan nama kolom harus diperbaiki pada saat Anda menyiapkan kueri. Begitulah cara kerja SQL.

Jadi, Anda memiliki dua pilihan bagaimana menyelesaikannya. Kedua pilihan melibatkan penulisan kode aplikasi:

(1) Kueri nilai yang berbeda dari way lalu tulis kode untuk menggunakannya untuk menyusun kueri pivot, menambahkan kolom dalam daftar SELECT sebanyak jumlah nilai yang berbeda.

foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) {
  $way = (int) $row["way"];
  $way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way";
}
$pivotsql = "SELECT stop, " . join(", ", $way_array) .
   "FROM `MyTable` GROUP BY `stop`";

Sekarang Anda dapat menjalankan kueri baru, dan kueri tersebut memiliki kolom sebanyak jumlah way . yang berbeda nilai.

$pivotstmt = $pdo->query($pivotsql);

(2) Membuat kueri data baris demi baris seperti yang terstruktur dalam database Anda, lalu tulis kode untuk berporos ke dalam kolom sebelum Anda menampilkan data.

$stoparray = array();
foreach ($pdo->query("SELECT * FROM `MyTable`") as $row) {
  $stopkey = $row["stop"];
  if (!array_key_exists($stopkey, $stoparray)) {
    $stoparray[$stopkey] = array("stop"=>$stopkey);
  }
  $waykey = "way_" . $row["way"];
  $stoparray[$stopkey][$waykey] = $row["time"];
}

Sekarang Anda memiliki larik array yang terlihat sama seperti jika Anda menjalankan kueri pivot, tetapi SQL sebenarnya yang Anda jalankan jauh lebih sederhana. Anda memroses hasil kueri ke dalam kumpulan array yang berbeda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql + php dengan karakter khusus seperti '(Apostrof) dan (Tanda kutip)

  2. Ubuntu - 12.04 - MySql tidak akan memulai dengan menggunakan layanan mysql start

  3. Bagaimana cara agar PHP berfungsi dengan ADOdb dan MySQL?

  4. MySQL:Banyak tabel atau banyak database?

  5. Batasan unik Mysql yang memungkinkan satu baris untuk kombinasi