Mencari di Banyak Tabel dengan Kolom Identik

Mencari di Banyak Tabel dengan Kolom Identik diperlukan saat kita mempunyai banyak tabel berdasarkan item (misalnya judul buku di Maktabah Reza Ervani) tetapi dengan struktur kolom yang sama. Berikut cara melakukannya di MariaDB

Jika Anda memiliki banyak tabel dengan kolom yang identik, tetapi nama tabelnya berbeda-beda, dan Anda ingin mencari kata “mengurai” di kolom arti pada semua tabel tersebut, Anda dapat menggunakan skrip PHP untuk membangun dan menjalankan query UNION secara dinamis berdasarkan daftar tabel yang Anda miliki.

Berikut adalah contoh pendekatan bagaimana Anda bisa melakukannya:

  1. Dapatkan daftar tabel: Pertama-tama, Anda perlu mendapatkan daftar semua tabel yang ada dalam database yang memiliki kolom arti.
  2. Bangun query UNION: Setelah Anda mendapatkan daftar tabel, Anda dapat membangun pernyataan SQL UNION secara dinamis berdasarkan tabel-tabel tersebut.
  3. Jalankan query: Jalankan query UNION yang telah dibangun, dan tampilkan hasilnya.

Contoh kode PHP:

<?php
// Koneksi ke database
$mysqli = new mysqli('host', 'username', 'password', 'database');

if ($mysqli->connect_error) {
    die('Koneksi gagal: ' . $mysqli->connect_error);
}

// Inisialisasi variabel untuk menyimpan pernyataan SQL
$query_parts = [];

// Mendapatkan daftar tabel dalam database
$tables_result = $mysqli->query("SHOW TABLES");

if ($tables_result) {
    // Loop melalui setiap tabel yang ada di database
    while ($table_row = $tables_result->fetch_row()) {
        $table_name = $table_row[0];

        // Tambahkan pernyataan SQL untuk tabel ini ke dalam array query_parts
        $query_parts[] = "SELECT '$table_name' AS sumber, arti FROM $table_name WHERE arti LIKE '%mengurai%'";
    }

    // Bebaskan hasil query
    $tables_result->free();

    // Gabungkan semua pernyataan SQL dengan UNION
    if (!empty($query_parts)) {
        $final_query = implode(" UNION ", $query_parts);

        // Jalankan query gabungan
        $result = $mysqli->query($final_query);

        if ($result) {
            // Menampilkan hasil
            while ($row = $result->fetch_assoc()) {
                echo 'Sumber: ' . $row['sumber'] . ' - Arti: ' . $row['arti'] . "<br>";
            }

            // Bebaskan hasil query
            $result->free();
        } else {
            echo 'Error: ' . $mysqli->error;
        }
    } else {
        echo 'Tidak ada tabel yang ditemukan.';
    }
} else {
    echo 'Error: ' . $mysqli->error;
}

// Tutup koneksi
$mysqli->close();
?>

Penjelasan:

  • Koneksi ke database: Sambungkan ke database menggunakan kredensial yang sesuai.
  • Daftar tabel: Dapatkan daftar semua tabel di database menggunakan SHOW TABLES.
  • Bangun query: Loop melalui setiap tabel dan bangun pernyataan SELECT untuk kolom arti menggunakan query LIKE '%mengurai%'. Simpan semua pernyataan SQL dalam array query_parts.
  • Gabungkan query dengan UNION: Gabungkan semua pernyataan SELECT yang ada dalam query_parts menggunakan UNION untuk membentuk query akhir.
  • Jalankan query dan tampilkan hasil: Jalankan query akhir dan tampilkan hasilnya.
  • Tutup koneksi: Setelah selesai, tutup koneksi ke database.

Dengan pendekatan ini, Anda dapat mencari kata “mengurai” di banyak tabel sekaligus, dengan kolom yang identik, tetapi dengan nama tabel yang berbeda-beda.

About Reza Ervani 426 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.