Menggabungkan Tabel dengan Union di MySQL

Operator Union pada MySQL digunakan untuk menggabungkan dua atau lebih tabel dimana hasilnya kolom dari tabel yang digabungkan menjadi satu kolom, tidak seperti join dimana tabel yang digabungkan menghasil kolom baru dan memerlukan relasi / hubungan antar tabel untuk memudahkan penggabungan, sedangkan dengan operator union kita dapat menggabungkan dua atau lebih tabel tanpa memerlukan hubungan antar tabel. Agar lebih memahami perbedaan Join dan Union pada MySQL, berikut ini ilustrasi perbedaan dari fungsi join dengan operator union:
Berikut syntax dasar / bentuk umum dalam menggunakan operator union di MySQL:
select kolom1, kolom2, kolomN from tabel1 [where kondisi] union select kolom1, kolom2, kolomN from tabelN [where kondisi] [order by] [limit];

Contoh:
mysql> select count(*) as jumlah from matkul;
+--------+
| jumlah |
+--------+
|     12 |
+--------+
1 row in set (0.00 sec)

mysql> select count(*) as jumlah from praktikum;
+--------+
| jumlah |
+--------+
|      4 |
+--------+
1 row in set (0.00 sec)

mysql> select nama_matkul, semester from matkul where id_matkul <= 5 union select nama_praktikum, semester from praktikum;
+---------------------------------------------+----------+
| nama_matkul                                 | semester |
+---------------------------------------------+----------+
| Algoritma Pemrograman 1 A                   | 1        |
| Algoritma Pemrograman 1 B                   | 1        |
| Algoritma Pemrograman 1 C                   | 1        |
| Bahasa Inggris 1                            | 1        |
| Fisia & Kimia Dasar 1                       | 1        |
| Prak. Algoritma dan Pemrograman 1           | 1        |
| Prak. Pengantar Tek. Komputer dan Informasi | 1        |
| Prak. Matematika Informatika 1              | 1        |
| Prak. Fisika Dasar                          | 1        |
+---------------------------------------------+----------+
9 rows in set (0.00 sec)

Dengan demikian kita telah menggabungkan dua kolom dari dua tabel menjadi satu kolom yakni penggabungan antara kolom nama_matkul dengan nama_praktikum, dan semester dari kedua tabel. Jumlah kolom yang di pilih harus sama dari masing-masing tabel, artinya jika dari tabel pertama kita memilih dua kolom maka pada tabel ke dua dan seterusnya juga harus dua kolom karena jika tidak akan menghasilkan error 1222 seperti contoh berikut:

mysql> select nama_matkul, semester from matkul where id_matkul <= 5 union select nama_praktikum from praktikum;
ERROR 1222 (21000): The used SELECT statements have a different number of columns

Selain itu nama kolom akan mengikuti nama_kolom yang dipilih dari tabel pertama meskipun sudah menggunakan klausa AS untuk merubah nama tabel, contohnya sebagai berikut:

mysql> select nama_matkul as Matkul, semester as Smt from matkul where id_matkul <= 1 union select nama_praktikum, semester from praktikum where id_prak <= 1 limit 2;
+-----------------------------------+------+
| Matkul                            | Smt  |
+-----------------------------------+------+
| Algoritma Pemrograman 1 A         | 1    |
| Prak. Algoritma dan Pemrograman 1 | 1    |
+-----------------------------------+------+
2 rows in set (0.00 sec)

mysql> select nama_matkul, semester from matkul where id_matkul <= 1 union select nama_praktikum as Matkul, semester from praktikum as Smt where id_prak <= 1 limit 2;
+-----------------------------------+----------+
| nama_matkul                       | semester |
+-----------------------------------+----------+
| Algoritma Pemrograman 1 A         | 1        |
| Prak. Algoritma dan Pemrograman 1 | 1        |
+-----------------------------------+----------+
2 rows in set (0.00 sec)

Union All

Operator Union memiliki dua jenis Union yakni Union dan Union All dimana perbedaan antara union dan union all terletak pada data yang dihasilkan. Secara default operator union akan menghilangkan duplikasi / kesamaan data ketika penggabungan dilakukan, sementara untuk tetap menampilkan duplikasi data kita dapat menggunakan Union All sehingga semua data yang tersimpan termasuk data dengan nilai yang sama akan ditampilkan, contohnya sebagai berikut:

mysql> select mhs_id from krs where mhs_id = 1 union select id_mhs from mahasiswa where id_mhs = 1;
+--------+
| mhs_id |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)

mysql> select mhs_id from krs where mhs_id = 1 union all select id_mhs from mahasiswa where id_mhs = 1;
+--------+
| mhs_id |
+--------+
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
+--------+
13 rows in set (0.00 sec)

Dengan demikian jangan sampai tertukar mengenai perbedaan antara union dan union all

Perbedaan Join dan Union

Berdasarkan contoh diatas tentu kita telah memahami perbedaan antara fungsi join dengan operator union di MySQL, namun terdapat tiga poin penting perbedaan antara join dan union sebagai berikut:

Hal Join Union
Dasar Digunakan untuk mengembalikan kecocokan data antara dua atau lebih tabel yang saling memiliki relasi Digunakan untuk mengkombinasi data dari dua atau lebih tabel menjadi satu baris data tanpa perlu memiliki relasi antar tabel
Kolom Dapat memilih beberapa kolom dari masing-masing tabel Jumlah kolom yang dipilih harus sama dari masing-masing tabel
Duplikasi Tidak menghapus duplikasi data Menghapus duplikasi data


Bayu Radityo

Seorang lulusan teknik informatika yang senang dalam berbagi ilmu pengetahuan, dan membuat karya digital berupa photomanipulation dan digital drawing. instagram external-link

Posting Komentar

Lebih baru Lebih lama