Menggabungkan Query SQL dengan UNION

Bagi Anda yang terbiasa berkancah di dunia data base istilah UNION pada sebuah query sudah merupakan kata yang sangat familier. Hampir sehari-hari para administrator database berhadapan dengan susunan script berjalan di system database.

Ilustrasi menjalankan perintah SQL UNION
Ilustrasi menjalankan perintah SQL UNION
Pada umumnya hampir semua aplikasi system database menggunakan fungsi UNION. Seperti pengolahan data SQL Server aplikasi system database milik Microsoft, MySQL yang sangat fenomenal dan paling sering digunakan untuk aplikasi web. Demikian juga dengan MariaDB yang sangat kompatibel dengan MySQL. Selain itu ada juga aplikasi system database PostgreSQL atau yang sering disebut Postgres dan juga aplikasi Oracle biasanya disebut sebagai Oracle RDBMS milik Oracle Corporation.  semuanya mengenal istilah query dalam proses pengolahan datanya, tetapi ada perbedaan antara satu system database dengan database lainnya.

Union pada query adalah salah satu fungsi untuk menggabungkan dua atau lebih perintah Select untuk memanggil table pada system database, sehingga isi dari masing-masing select akan tergabung menjadi satu seolah-olah dari satu select.

Syntax. :
SELECT ...
UNION [ALL | DISTINCT] SELECT ...
[UNION [ALL | DISTINCT] SELECT ...]

Syarat untuk menggabungkan dua atau lebih select adalah format field-field dalam semua select harus sama dan konsisten. Select yang akan digabungkan harus memiliki nama-nama field yang sama dengan type yang sama juga. Kalau kedua dipaksakan menggunakan UNION tetapi select yang digabungkan berbeda maka perintah query akan ditolak oleh system database untuk dijalankan.

Contoh:
Select KodePegawai, NamaPegawai, Jabatan from PegawaiDepA
Union
Select KodePegawai, NamaPegawai, Jabatan from PegawaiDepB


Pada contoh diatas terlihat select pertama yang manampilkan table PegawaiDepA menampilkan 3 field KodePegawai, NamaPegawai, Jabatan. Demikian juga dengan select yang kedua yang menampilkan 3 field juga untuk table PegawaiDepB.  Penggabungan union untuk query diatas akan berjalan dengan baik karena memiliki struktur dan format yang sama digabungkan.

Hasil dari query diatas akan berhasil menampilkan dua table dalam satu kali query. Penggunaan Union sangat efektif digunakan jika proses pengolahan data banyak terdiri dari table-tabel yang sama tetapi dengan isi yang berbeda.

Hasil query ini akan menampilkan data pada row-row pertama dibagian atas dari table PegawaiDepA dan data-data pada row-row bagian bawah atau akhir berasal dari PegawaiDepB.

Bagaimana kalau hasil query harus dalam bentuk terindex dan terurut, misalnya berdasarkan KodePegawai maka query harus diubah menjadi seperti ini.

Select KodePegawai, NamaPegawai, Jabatan From (
Select KodePegawai, NamaPegawai, Jabatan from PegawaiDepA
Union
Select KodePegawai, NamaPegawai, Jabatan from PegawaiDepB ) DERIVEDTBL
Order by KodePegawai


Dari hasil query diatas maka tidak lagi select pertama akan berada di row diatas dan select yang kedua dibawah, tetapi akan berurutan berdasarkan KodePegawai.

Oke selamat mencoba.