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:
- Dapatkan daftar tabel: Pertama-tama, Anda perlu mendapatkan daftar semua tabel yang ada dalam database yang memiliki kolom
arti
. - Bangun query
UNION
: Setelah Anda mendapatkan daftar tabel, Anda dapat membangun pernyataan SQLUNION
secara dinamis berdasarkan tabel-tabel tersebut. - 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 kolomarti
menggunakan queryLIKE '%mengurai%'
. Simpan semua pernyataan SQL dalam arrayquery_parts
. - Gabungkan query dengan
UNION
: Gabungkan semua pernyataanSELECT
yang ada dalamquery_parts
menggunakanUNION
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.
Leave a Reply