Tab Silang MySQL Dinamik dengan Lajur Tidak Diketahui
Dalam MySQL, pertanyaan tab silang tradisional memerlukan penetapan nombor dan nama lajur semasa penyediaan pertanyaan . Walau bagaimanapun, apabila bilangan lajur tidak diketahui, seperti dalam kes pertanyaan silang tab dinamik, pendekatan berbeza diperlukan.
Terdapat dua penyelesaian utama yang melibatkan penulisan kod aplikasi:
1. Pertanyaan Nilai Berbeza dan Bina Pertanyaan:
Contoh:
<code class="php">foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) { $way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way"; } $pivotsql = "SELECT stop, " . join(",", $way_array) . " FROM `MyTable` GROUP BY `stop`";</code>
2. Pertanyaan Baris demi Baris dan Pangsi dalam Kod:
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>
Dengan menggunakan salah satu pendekatan ini, anda boleh melakukan pertanyaan tab silang dinamik dalam MySQL walaupun bilangan lajur tidak diketahui , membolehkan fleksibiliti dan menampung struktur data yang berkembang.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pertanyaan Cross-Tab Dinamik dalam MySQL dengan Nama Lajur Tidak Diketahui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!