Anda di halaman 1dari 2

4/16/2021 Menggabungkan Table Transaksi dengan UNION - MySQL Tutorial Bahasa Indonesia - by PHI-Integration

Search this si

Halaman Depan Daftar Isi Administrasi MySQL Tips MySQL Performance Tuning Bahasa SQL Komunitas dan User Group Program Pelatihan

Bahasa SQL >


Menggabungkan Table Transaksi dengan UNION

Pendahuluan

Di dalam berbagai kasus praktek di lapangan yang penulis temukan, ada kesalahan SQL umum yang dilakukan jika membaca diagram ER
(Entity Relationship Diagram) pada kasus relasi "many to many" - seperti pada gambar di bawah ini.

Terlihat ada dua table transaksi - tr_penjualan dan target_penjualan - yang memiliki referensi table yang sama, yaitu ms_produk.

Menu Utama
Halaman Depan
Cara Menggunakan MySQL
Instalasi
Administrasi MySQL
MySQL Client
SQLyog Gambar 1 : Hubungan Antar Table Referensi / Master dengan Table Transaksi
Maatkit
PHPMyAdmin
SQLyog Kesalahan Umum : Penggunaan JOIN
Bahasa SQL
Kesalahan umum yang terjadi biasanya adalah para developer atau dba langsung menggunakan konstruksi join berdasarkan hubungan yang
Tips MySQL kelihatan sangat nyata pada diagram Gambar 1 - yakni key "kode_produk".
PHP / MySQL
Download Artikel Perintah Select SQL yang dihasilkan menggunakan konstruksi JOIN kira-kira sebagai berikut :

Konsep Umum SELECT *


Apa Itu Database ? FROM ms_produk,
Apa itu Join ? tr_penjualan,
Tipe / Jenis JOIN TABLE pada target_penjualan
MySQL 5.0 WHERE ms_produk.kode_produk = tr_penjualan.kode_produk
Kesalahan Umum AND ms_produk.kode_produk = target_penjualan.kode_produk
Cara Menggunakan MySQL

Lain-lain atau
Komunitas dan User Group
Lowongan SELECT *
FROM ms_produk
Business Intelligence (BI)
JOIN tr_penjualan
ON ms_produk.kode_produk = tr_penjualan.kode_produk
JOIN target_penjualan
ON ms_produk.kode_produk = target_penjualan.kode_produk

Dan jika menggunakan agregasi function seperti SUM akan seperti ini :

SELECT ms_produk.kode_produk,
SUM(jumlah_pembelian) AS jumlah,
SUM(nilai_target_penjualan) AS nilaitarget
FROM ms_produk
JOIN tr_penjualan
ON ms_produk.kode_produk = tr_penjualan.kode_produk
JOIN target_penjualan
ON ms_produk.kode_produk = target_penjualan.kode_produk
GROUP BY ms_produk.kode_produk

Konstruksi ini jelas salah karena JOIN akan menghasilkan kombinasi perkalian dari table-table yang terlibat. Dan karena hubungan anta
kedua table transaksi adalah many to many Ini akan mengakibatkan "distorsi" nilai. Kecuali jika masing-masing JOIN digrouping terlebi
dahulu dengan level yang sama dan menghasilkan unique row untuk tiap grouping.

Solusi : Penggunaan UNION

Training BI & SQL Agar konsisten maka table-table ini perlu digabung dengan mekanisme UNION.

Syntax :

mysql.phi-integration.com/sql/menggabungkan-table-transaksi-dengan-union 1/2
4/16/2021 Menggabungkan Table Transaksi dengan UNION - MySQL Tutorial Bahasa Indonesia - by PHI-Integration
SELECT ...
Situs Terkait UNION [ALL | DISTINCT] SELECT ...
[UNION [ALL | DISTINCT] SELECT ...]
- KampusBI.com
- Pentaho @ PHI-Integration.com
- Manual Download Untuk selection, jumlah kolom dan tipe data dari table-table yang digabung harus sama.
- BelajarExcel.info
- BelajarSQL.com Contoh :

SELECT tr_penjualan.kode_produk,
-50%
tr_penjualan.jumlah_pembelian,
NULL AS nilai_target_penjualan
FROM ms_produk,
tr_penjualan
WHERE ms_produk.kode_produk = tr_penjualan.kode_produk
UNION
-49%
SELECT target_penjualan.kode_produk,
NULL AS jumlah_pembelian,
nilai_target_penjualan
FROM ms_produk,
target_penjualan
WHERE ms_produk.kode_produk = target_penjualan.kode_produk
-40%

dan untuk agregasi SUM akan seperti ini :

SELECT t1.kode_produk,
t1.nama_produk,
-50% SUM(t1.jumlah_pembelian) AS jumlah,
SUM(t1.nilai_target_penjualan) AS target
FROM (SELECT tr_penjualan.kode_produk,
ms_produk.nama_produk,
tr_penjualan.jumlah_pembelian,
NULL AS nilai_target_penjualan
-34% FROM ms_produk,
tr_penjualan
WHERE ms_produk.kode_produk = tr_penjualan.kode_produk
UNION
SELECT target_penjualan.kode_produk,
ms_produk.nama_produk,
NULL AS jumlah_pembelian,
nilai_target_penjualan
FROM ms_produk,
target_penjualan
WHERE ms_produk.kode_produk = target_penjualan.kode_produk) AS t1

Hasil UNION tanpa GROUP BY akan tampak seperti pada gambar di bawah ini.

~~~ Selesai ~~~

Comments

You do not have permission to add comments.

Sign in | Report Abuse | Print Page | Powered By Google Sites

mysql.phi-integration.com/sql/menggabungkan-table-transaksi-dengan-union 2/2

Anda mungkin juga menyukai