Monday, 29 June 2015

Update Dari Hasil Penjumlahan Dua Buah Query


Bagaimana cara kita melakukan operasi bilangan semacam operasi bilangan berikut dengan menggunakan query di mysql:


double variabelx;
double variabely;
double hasil;

hasil = variabelx + variabely;
Tidak masalah, pertama kita buat sebuah tabel dengan dua kolom, kolom pertama bertipe data varchar untuk menaruh nama variabel di sini tabelnya diberi nama variabel, dan kolom kedua bertipe data double untuk menyimpan nilainya di sini tabelnya diberi nama nilai.

Kemudian dimasukkan datanya sehingga hasilnya sebagai berikut:

:::variabel:::nilai:::
::: variabelx ::: 3 :::
::: variabely ::: 6 :::
::: hasil ::: 0 :::
Pertama, ambil nilai dari variabelx dan variabely. Berikut query untuk variabelx:


SELECT `nilai`
FROM `belajar`
WHERE `variabel` = 'variabelx'
Berikut hasil query untuk variabelx:


:::nilai:::
::: 3 :::
Berikut query untuk variabely:


SELECT `nilai`
FROM `belajar`
WHERE `variabel` = 'variabely'
Berikut hasil query untuk variabely:


:::nilai:::
::: 6 :::
Untuk update nilai hasil dengan nilai "1":


UPDATE `belajar`
SET `nilai` = '1'
WHERE `variabel` = 'hasil'


:::variabel:::nilai:::
::: hasil ::: 1 :::
Jadi update nilai hasil dengan nilai hasil penjumlahan akan berupa:


UPDATE `belajar`
SET `nilai` =
(SELECT `nilai`
FROM `belajar`
WHERE `variabel` = 'variabelx') +
(SELECT `nilai`
FROM `belajar`
WHERE `variabel` = 'variabely')
WHERE `variabel` = 'hasil'
Ternyata perintah di atas menghasilkan Error #1093. Hal itu disebabkan, dalam sebuah subquery pada perintah update, hanya boleh dilakukan pada tabel yang berbeda. Ganti perintah di atas dan tambahkan alias dengan perintah as pada masing-masing query. Karena menggunakan alias, maka query harus dipindahkan ke depan. Jadinya seperti berikut.


UPDATE `belajar` as tabel1,
(SELECT `nilai`
FROM `belajar`
WHERE `variabel` = 'variabelx')
as tabel2,
(SELECT `nilai`
FROM `belajar`
WHERE `variabel` = 'variabely')
as tabel3
SET `tabel1`.`nilai` = `tabel2`.`nilai` + `tabel3`.`nilai`
WHERE `variabel` = 'hasil'
Dengan hasil akhir:


:::variabel:::nilai:::
::: hasil ::: 9 :::

No comments:

Post a Comment