Masalah:
Anda mempunyai jadual yang mengandungi data dengan berbilang dimensi dan anda mahu buat jadual jadual silang (jadual pangsi) secara dinamik tanpa mengetahui bilangan dimensi di hadapan.
Penyelesaian:
Bilangan lajur untuk pertanyaan pangsi mesti ditentukan pada masa penyediaan pertanyaan. Untuk mencapai penjadualan silang dinamik, anda mempunyai dua pilihan yang melibatkan penulisan kod aplikasi:
Pilihan 1: Pertanyaan Nilai Berbeza dan Bina SQL Dinamik
Contoh:
<code class="php">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`";</code>
Pilihan 2: Pertanyaan dan Pasca Proses Data Baris mengikut Baris
Contoh:
<code class="php">$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"]; }</code>
Atas ialah kandungan terperinci Bagaimana untuk Membuat Jadual Jadual Bersilang secara Dinamik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!