Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mencipta Pertanyaan Cross-Tab Dinamik dalam MySQL dengan Nama Lajur Tidak Diketahui?

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

Susan Sarandon
Susan Sarandonasal
2024-10-27 14:07:01864semak imbas

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>

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>

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!

Kenyataan:
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