Di Oracle Database, UNION
operator memungkinkan kami untuk menggabungkan hasil dari dua kueri menjadi satu kumpulan hasil.
Contoh
Misalkan kita memiliki tabel berikut:
SELECT * FROM Teachers;
SELECT * FROM Students;
Hasil:
TEACHERID | NAMA GURU |
---|---|
1 | Warren |
2 | Ben |
3 | Cathy |
4 | Cathy |
5 | Tagihan |
6 | Tagihan |
STUDENTID | NAMA MAHASISWA |
---|---|
1 | Faye |
2 | Jet |
3 | Lonjakan |
4 | Ein |
5 | Warren |
6 | Tagihan |
Berikut ini contoh penggunaan UNION
operator untuk mengembalikan nama semua guru dan siswa:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Hasil:
NAMA GURU |
---|
Ben |
Tagihan |
Cathy |
Ein |
Faye |
Jet |
Spike |
Warren |
Secara default, UNION
operator secara implisit menerapkan DISTINCT
operasi. Dengan kata lain, ini hanya mengembalikan nilai yang berbeda secara default. Jadi hasil di atas hanya berisi satu masing-masing Warren, Cathy dan Bill. Ini terlepas dari fakta bahwa tabel gabungan sebenarnya berisi dua Warrens, dua Cathys, dan tiga Bills (ada dua guru bernama Cathy, seorang guru dan pelanggan bernama Warren, dan dua bernama Bill, serta satu siswa bernama Bill).
Sertakan Duplikat
Kita dapat menggunakan ALL
kata kunci untuk memasukkan nilai duplikat dalam hasil:
SELECT TeacherName FROM Teachers
UNION ALL
SELECT StudentName FROM Students;
Hasil:
NAMA GURU |
---|
Warren |
Ben |
Cathy |
Cathy |
Tagihan |
Tagihan |
Faye |
Jet |
Spike |
Ein |
Warren |
Tagihan |
Kali ini kami mendapat dua belas baris, bukan delapan yang kami dapatkan dalam contoh pertama kami.
Kita dapat melihat bahwa kedua Cathys dikembalikan dan ketiga Bills dikembalikan.
Beberapa Hal yang Perlu Diingat
Perhatikan bahwa ekspresi harus cocok dalam jumlah dan harus dalam grup tipe data yang sama. Oleh karena itu, kami tidak dapat melakukan hal berikut:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Hasil:
ORA-01789: query block has incorrect number of result columns
Atau ini:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId FROM Students;
Hasil:
ORA-01790: expression must have same datatype as corresponding expression
Meskipun, kita dapat menggunakan fungsi seperti TO_CHAR()
untuk mengonversi kolom ke grup tipe data yang sesuai:
SELECT TeacherName FROM Teachers
UNION
SELECT TO_CHAR(StudentId) FROM Students;
Hasil:
TEACHERNAME 1 2 3 4 5 6 Ben Bill Cathy Warren