Bagaimana untuk Mencipta Pertanyaan Cross-Tab Dinamik dalam MySQL dengan Nama Lajur Tidak Diketahui?

Susan Sarandon
Lepaskan: 2024-10-27 14:07:01
asal
957 orang telah melayarinya

How to Create Dynamic Cross-Tab Queries in MySQL with Unknown Column Names?

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:

  • Dapatkan nilai yang berbeza untuk lajur yang tidak diketahui (cth., cara).
  • Bina pertanyaan pangsi dengan menggabungkan nilai yang berbeza untuk membentuk lajur senarai PILIH.
  • 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>
    Salin selepas log masuk

2. Pertanyaan Baris demi Baris dan Pangsi dalam Kod:

  • Soal data dalam struktur asalnya.
  • Tulis kod untuk memutar data ke dalam lajur sebelum memaparkannya.
  • 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>
    Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan