Update Data dari Dua Tabel
Saat bekerja dengan database relasional, sering kali kita harus memperbarui data di satu tabel berdasarkan informasi yang ada di tabel lain. Contoh umum dari kasus ini adalah memperbarui gaji pegawai berdasarkan persentase kenaikan yang disimpan dalam tabel terpisah.
Dalam artikel ini, kita akan membahas langkah-langkah untuk melakukan update dua tabel menggunakan perintah UPDATE
dan JOIN
di MySQL.
Studi Kasus: Kenaikan Gaji Pegawai
Bayangkan kita memiliki dua tabel berikut:
-
Tabel
pegawai
yang menyimpan data pegawai dan gaji mereka. -
Tabel
kenaikan_gaji
yang menyimpan persentase kenaikan gaji untuk masing-masing pegawai.
Langkah 1: Membuat Database dan Tabel
CREATE DATABASE shorts;
USE shorts;
-- Tabel pegawai
CREATE TABLE pegawai (
id INT PRIMARY KEY,
nama VARCHAR(100),
gaji INT
);
-- Tabel kenaikan_gaji
CREATE TABLE kenaikan_gaji (
pegawai_id INT,
persen_kenaikan DECIMAL(5,2)
);
Langkah 2: Memasukkan Data
-- Data awal pegawai
INSERT INTO pegawai (id, nama, gaji) VALUES
(1, 'Andi', 5000000),
(2, 'Budi', 6000000);
-- Data kenaikan gaji
INSERT INTO kenaikan_gaji (pegawai_id, persen_kenaikan) VALUES
(1, 10.0),
(2, 7.5);
Langkah 3: Update Gaji Berdasarkan Persen Kenaikan
Nah, di sinilah kita menggunakan UPDATE
dengan JOIN
untuk memperbarui gaji pegawai berdasarkan data dari tabel kenaikan_gaji
.
UPDATE pegawai AS p
JOIN kenaikan_gaji AS kg
ON p.id = kg.pegawai_id
SET p.gaji = p.gaji + (p.gaji * kg.persen_kenaikan / 100);
Penjelasan:
-
JOIN
digunakan untuk menggabungkan dua tabel berdasarkanid
pegawai. -
SET
menghitung gaji baru dengan menambahkan gaji lama dan nilai kenaikannya. -
Contoh:
-
Andi: 5.000.000 + (10% dari 5.000.000) = 5.500.000
-
Budi: 6.000.000 + (7.5% dari 6.000.000) = 6.450.000
-
Kapan Teknik Ini Digunakan?
Teknik ini sangat berguna ketika:
-
Data yang akan di-update berasal dari tabel lain.
-
Anda ingin menghindari penggunaan prosedur yang kompleks.
-
Anda mengelola sistem HRD, keuangan, stok barang, dll.
Penutup
Menggunakan UPDATE
dengan JOIN
adalah solusi yang efisien dan elegan untuk memperbarui data dari banyak tabel sekaligus. Teknik ini penting dikuasai oleh setiap programmer atau administrator database yang bekerja dengan SQL dan sistem relasional seperti MySQL.
Tag:
mysql, sql, update, join, sql update, mysql join, script
Alternatif Query Update (tanpa menggunakan JOIN)
UPDATE pegawai SET gaji = gaji + (gaji * ( SELECT persen_kenaikan FROM kenaikan_gaji WHERE kenaikan_gaji.pegawai_id = pegawai.id ) / 100);