Friday, September 16, 2011

MySQL : Union Syntax For Combine Result Sets

MySQL Union adalah statemen yang mengkombinasikan dua buah atau lebih resultset dari multi sql statemen SELECT sehingga menjadi satu buah resulset.


Union Statemen memiliki beberapa ketentuan sebagai berikut.
  1. Jumlah kolom/field dari setiap statemen SELECT harus sama.
  2. Tipe data kolom/field dari setiap statemen SELECT harus kompatibel.
Secara default Statemen UNION akan menghapus semua record duplikat dari resultset. Apabila Anda ingin record duplikat tetap di tampilkan maka pada resultset tuliskan secara explisit UNION ALL.

Pola penulisan Union
SELECT statement
	UNION [DISTINCT | ALL]
SELECT statement
Sebagai contoh pada sebuah aplikasi tentang bisnis kita ingin menggabungkan data pemasok yang tersimpan di table pemasok dan data pelanggan di tabel pelanggan.

A.1 Struktur Table Pemasok
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| kode   | char(6)      | NO   | PRI |         |       |
| nama   | varchar(255) | YES  |     | NULL    |       |
| alamat | varchar(255) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
A.2 Contoh Data Table Pelanggan Sebagai Berikut
+--------+------------------+-------------------+
| kode   | nama             | alamat            |
+--------+------------------+-------------------+
| 000001 | HERU SASONGKO    | JL BUAH BATU      |
| 000002 | MIFTAH KAMADULIN | JL CIRATA NO 9    |
| 000003 | RIZKI PRIHANTO   | JL CIJERAH NO 87  |
| 000004 | PITRASCHA        | JL ANTAPANI NO 9  |
| 000005 | DENDIE           | JL CIRANJANG NO 9 |
+--------+------------------+-------------------+
B.1 Struktur Table Pelanggan
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| kode   | char(6)      | NO   | PRI | 0       |       |
| nama   | varchar(255) | YES  |     | NULL    |       |
| alamat | varchar(255) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
B.2 Contoh Data Table Pelanggan Sebagai Berikut
+--------+----------------+-------------------+
| kode   | nama           | alamat            |
+--------+----------------+-------------------+
| 000000 | DENDIE         | JL ASMI NO 18     |
| 000002 | YULIANTI       | JL PURNAWARMAN 90 |
| 000003 | IRWAN SETIAWAN | JL CIPEDES 98     |
| 000004 | RIZKI AZHARI   | JL CIMENYAN 98    |
+--------+----------------+-------------------+

Berikut ini adalah cara menggabungan data dari kedua table tersebut

1. Menggunakan Union atau Union Distinct
select nama from pemasok union select nama from pelanggan;
+------------------+
| nama             |
+------------------+
| HERU SASONGKO    |
| MIFTAH KAMADULIN |
| RIZKI PRIHANTO   |
| PITRASCHA        |
| DENDIE           |
| YULIANTI         |
| IRWAN SETIAWAN   |
| RIZKI AZHARI     |
+------------------+

2. Menggunakan Union All
select nama from pemasok union  all select nama from pelanggan;
+------------------+
| nama             |
+------------------+
| HERU SASONGKO    |
| MIFTAH KAMADULIN |
| RIZKI PRIHANTO   |
| PITRASCHA        |
| DENDIE           |
| DENDIE           |
| YULIANTI         |
| IRWAN SETIAWAN   |
| RIZKI AZHARI     |
+------------------+
Perhatikan nama dendie ditampilkan dua buah.
  • Nama dendie pertama berasal dari tabel pemasok.
  • Nama dendie kedua berasal dari table pelanggan.

No comments:

Post a Comment