Friday, July 23, 2010

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 :::

2 comments:

  1. assalamualaikum

    anak Inform-ITS ya?
    mau tukeran link ga?

    c0c

    ReplyDelete
  2. Bang yg jago programer web,.NET,query sql+mysql add YM saya dong

    arminto_nn

    ReplyDelete