UNION-SQL
Penggabungan hasil SELECT secara “Vertikal”
“UNION adalah operator SQL yang digunakan untuk menggabungkan hasil dari 2 atau lebih SELECT - statement secara “Vertikal”, dengan catatan,
- Setiap hasil dari SELECT statement yang akan digabungkan (UNION) memiliki jumlah kolom yang sama
- Kolom tersebut juga harus memiliki tipe data yang sama, dan
- Kolom tersebut memiliki urutan posisi yang sama.
Berikut format syntax-nya:
Tabel yang Akan Digabungkan
“Oke, pertama - tama mari kita SELECT seluruh kolom dari tabel_A.” Aku memperhatikan intruksi pertama Senja.
“Selanjutnya kita SELECT seluruh kolom dari tabel_B,” tambah Senja.
Dan, hasilnya seperti ini :
Sesuai dengan syarat untuk penggabungan dengan UNION yang telah dijelaskan tadi bahwa:
- jumlah kolom tabel_A dan tabel_B adalah sama
- kolom-kolom pada tabel_A dan tabel_B memiliki tipe data yang sama, dan
- kolom-kolom pada tabel_A dan tabel_B memiliki urutan posisi yang sama.
Melalui pengecekan pada tabel_A dan tabel_B pastikan bahwa ketiga syarat penggabungan dengan UNION yang dinyatakan di atas terpenuhi. Langkah ini kita lakukan sebelum melanjutkan pada praktek berikutnya menggunakan UNION.
Menggunakan UNION
Kedua tabel_A dan tabel_B sudah memiliki jumlah kolom yang sama, dan juga urutan posisi kolom juga sama, jadi bisa langsung menggabungkan kedua kolom tersebut dengan menambahkan UNION.
Ketikkanlah kode berikut di code editor:
Jika query yang ku ketikkan benar dan kemudian dijalankan tabel penggabungan yang ku peroleh ditujukkan sebagai berikut :
Menggunakan UNION dengan Klausa WHERE
Aku bertanya pada Senja, “Terus, kalo ada kondisi WHERE, syntaxnya bagaimana? Misalnya aku hanya ingin menggabungkan tabel yang isinya data penjualan untuk kode produk prod-04 saja?”
”Mudah saja, tinggal tambahkan WHERE di kedua SELECT-statement, seperti berikut ini,”
Jika query-nya dengan benar dituliskan dan kemudian dijalankan maka akan diperoleh:
Tugas Praktek:
Lakukanlah hal yang sama dengan yang dicontohkan, akan dipilih kode_pelanggan = 'dqlabcust03' sebagai kondisinya.
Jika query-nya diketikkan dengan benar maka tabel penggabungan yang tampil dengan kondisi kode_pelanggan = 'dqlabcust03' adalah:
select * from tabel_A where kode_pelanggan='dqlabcust03' UNION
select * from tabel_B where kode_pelanggan='dqlabcust03';
Menyelaraskan (Conforming) Kolom
Aku diam sebentar untuk menyimak. Tapi, masih ada pertanyaan yang mengganjal di benakku.
“Hmm, aku masih bingung, Nja. Kebetulan data penjualan ini berada di kedua tabel A & B jumlah kolom dan posisinya sama serta nama kolomnya sama. Bagaimana kalau posisi kolom dari kedua tabelnya tidak sama? Apa tidak bisa di-UNION-kan?”
“Tentu saja bisa, kamu bisa menyelaraskan kolom dari kedua tabel di SELECT-statement. Mari kita contohkan dengan data dari tabel berikut ini.”
tabel Customers
dan tabel Supplier
Jumlah kolom dari kedua tabel tersebut sama - sama 7 kolom, tetapi kolom posisi kolom ContactName dari kedua tabel tidak sama. Di tabel Customer, posisi kolom ContactName berada di Kolom ke - 3 sedangkan di tabel supplier berada di kolom ke-2.
Jika langsung menggabungkan keduanya, tanpa menyelaraskan kolom hasilnya akan sebagai berikut:
Tentunya, ini hasil UNION yang tidak diinginkan, oleh karena itu, urutkan posisi kolom tersebut di SELECT-Statement dan juga pilih kolom yang ingin digabungkan, sehingga tidak perlu semua kolom dari kedua tabel di-UNION-kan, seperti berikut ini :
SELECT CustomerName, ContactName, City, PostalCode
FROM Customers
UNION
SELECT SupplierName, ContactName, City, PostalCode
FROM Suppliers;
Jika terdapat perbedaan nama kolom antara SELECT-statement pertama dan SELECT-statement kedua, maka secara default akan digunakan nama kolom dari SELECT-statement yang pertama.
Menggunakan UNION dan Menyelaraskan Kolom-Kolomnya.
Senja menyerahkan tugas praktik sederhana untuk menguji materi ini. Sekilas kubaca pertanyaan dan perintahnya tidak sulit. Baiklah, mari langsung terapkan ilmunya!
Ketikkan syntax query di bawah pada Code Editor, untuk melihat hasil dari penggabungan tabel (UNION) dengan menyelaraskan kolom.
Jika berhasil maka hasil nya akan seperti berikut ini:
source: DQLAB
Subscribe by Email
Follow Updates Articles from This Blog via Email
No Comments