Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membuat Tabulasi Salib Dinamik dalam MySQL Apabila Nilai Lajur Tidak Diketahui?
Apabila berurusan dengan jadual dengan bilangan nilai yang tidak diketahui dalam lajur tertentu (seperti "cara" dalam contoh yang disediakan), mencipta penjadualan silang dalam MySQL boleh kelihatan seperti satu cabaran. Pendekatan konvensional memerlukan anda untuk menentukan nama lajur pada masa membuat pertanyaan, yang mungkin tidak boleh dilaksanakan dalam situasi dinamik.
Untuk menangani cabaran ini, dua penyelesaian terprogram boleh digunakan :
Pendekatan ini melibatkan pengambilan nilai berbeza lajur dengan kiraan yang tidak pasti. Menggunakan senarai nilai ini, anda boleh membina pertanyaan pangsi dinamik dan menambah lajur yang diperlukan pada penyataan SELECT anda.
<code class="sql">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>
Kaedah alternatif ini melibatkan pertanyaan baris demi baris data kerana ia berstruktur dalam pangkalan data anda. Anda akan mengumpul data dalam tatasusunan dan kemudian memutarkannya ke dalam lajur sebelum memaparkannya.
<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>
Kedua-dua pendekatan memerlukan pengekodan untuk menyesuaikan diri dengan situasi dinamik di mana bilangan lajur tidak diketahui. Pilihan pendekatan akan bergantung pada keperluan manipulasi data khusus dan pertimbangan kecekapan.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Tabulasi Salib Dinamik dalam MySQL Apabila Nilai Lajur Tidak Diketahui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!