Contoh umum (dalam PHP):
Membangun SQL dinamis atau membangun kueri SQL Anda dengan bantuan bahasa pemrograman akan terlihat seperti ini (misalnya dalam PHP):
$pdos = $pdo->query("SHOW TABLES LIKE '%_name'");
$tables = $pdos->fetchAll();
$query = 'SELECT * FROM '.implode(' UNION SELECT * FROM ');
$pdo->query($query);
fetchAll
metode akan mengembalikan array yang berisi nama setiap tabel yang dipilih.
implode($glue, $array)
function mengambil array dan menggabungkan setiap nilai dalam array menggunakan $glue
parameter - biasanya Anda mengambil larik nilai dan meledakkannya menggunakan $glue = ','
untuk membuat daftar nilai yang dipisahkan koma.
Dalam kasus kami implode
memiliki kueri parsial sebagai $glue
untuk membuat satu UNION JOIN
besar kueri.
Setelah $query
terakhir sedang dibangun seharusnya terlihat seperti:
SELECT * FROM table_1_name
UNION
SELECT * FROM table_2_name
UNION
SELECT * FROM table_3_name
....
....
UNION
SELECT * FROM table_4000_name
Hasilnya harus berisi semua DISTINCT
baris dari 4000 tabel.
Contoh spesifik (dalam format SQL saja):
SELECT GROUP_CONCAT(
CONCAT('select * from ', table_name)
SEPARATOR ' union '
)
INTO @my_variable
FROM information_schema.tables
WHERE table_schema = 'dbname'
AND table_name LIKE '%_name';
PREPARE my_statement FROM @my_variable;
EXECUTE my_statement;
- Pernyataan pertama akan mendapatkan semua nama tabel dari
information_schema
basis data; CONCAT
fungsi awalan setiap nama tabel dengan'SELECT * FROM '
string;GROUP_CONCAT
melakukan pekerjaan yangimplode
akan dilakukan di PHP;-
INTO
klausa memastikan nilai disimpan di dalam variabel bernamamy_variable
; -
PREPARE
pernyataan mengambil nilai string (seperti yang Anda simpan dimy_variable
) dan memeriksa apakah nilainya adalah kueri SQL; - The
EXECUTE
pernyataan mengambil "pernyataan yang disiapkan" dan dengan baik... menjalankannya.
@my_variable adalah variabel sementara tetapi hanya dapat berupa jenis skalar (varchar, int, tanggal, datetime, biner, float, double, dll.) tidak sebuah larik.
GROUP_CONCAT
function adalah "fungsi agregat" yang berarti ia mengambil nilai agregat (konsep serupa dengan array - dalam kasus kami, kumpulan hasil kueri kami) dan menampilkan hasil string sederhana.