Belajar SQL: | Kadangkala kita memerlukan sebuah field berubah nilainya seiring waktu berjalan. sebagai contoh kasus adalah untuk mengetahui apakah garansi suatu barang masih berlaku atau tidak. Salah satu caranya adalah dengan menyediakan field "status" untuk menyimpan nilai berlaku atau habis untuk mengetahui status garansi bersangkutan. Cara ini punya kerumitan karena kita perlu mengubah isinya. Maka, alih-alih menyimpan data status garansi dalam sebuah field khusus, maka akan lebih mudah jika kita cukup menyimpan akhir masa garansi dan menentukan status garansi menggunakan query. Metode ini dinamakan juga sebagai Computed Field.
Penggunaan Computed Field seperti ini akan jauh lebih mudah dan jauh lebih fleksible karena hasil query akan berubah sesuai perubahan hari. Silahkan pelajari langkah-langkah berikut ini untuk membangun query status garansi tersebut.
mysql> use test ; Database changed mysql> -- -------------------------------------- mysql> -- create table contoh mysql> -- -------------------------------------- mysql> create table garansi ( -> id int auto_increment primary key, -> awal_garansi date null, -> akhir_garansi date null -> ) ; Query OK, 0 rows affected (0.11 sec) mysql> -- -------------------------------------- mysql> -- insert sample data mysql> -- -------------------------------------- mysql> insert into -> garansi (awal_garansi, akhir_garansi) -> values ('2010-07-17', '2013-07-16') -> , ('2011-09-24', '2014-09-23') -> , ('2010-10-14', '2013-10-23') -> , ('2012-01-14', '2015-01-23') -> ; Query OK, 4 rows affected (0.05 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> -- -------------------------------------- mysql> -- lihat isi sample data mysql> -- -------------------------------------- mysql> select * from garansi ; +----+--------------+---------------+ | id | awal_garansi | akhir_garansi | +----+--------------+---------------+ | 1 | 2010-07-17 | 2013-07-16 | | 2 | 2011-09-24 | 2014-09-23 | | 3 | 2010-10-14 | 2013-10-23 | | 4 | 2012-01-14 | 2015-01-23 | +----+--------------+---------------+ 4 rows in set (0.00 sec) mysql> -- -------------------------------------- mysql> -- lakukan query mysql> -- - tampilkan tanggal hari ini mysql> -- - hitung selisih tanggal hari ini dengan akhir garansi mysql> -- - dengan logika percabangan, mysql> -- => jika selisih positif artinya garansi sudah habis, mysql> -- => sebaliknya jika minus, maka garansi masih berlaku mysql> -- -------------------------------------- mysql> select garansi.* -> , current_date tanggal -> , datediff(current_date,akhir_garansi) selisih -> , case -> when datediff(current_date,akhir_garansi)>0 -> then 'habis' -> else 'aktif' end status -> from garansi ; +----+--------------+---------------+------------+---------+--------+ | id | awal_garansi | akhir_garansi | tanggal | selisih | status | +----+--------------+---------------+------------+---------+--------+ | 1 | 2010-07-17 | 2013-07-16 | 2013-12-17 | 154 | habis | | 2 | 2011-09-24 | 2014-09-23 | 2013-12-17 | -280 | aktif | | 3 | 2010-10-14 | 2013-10-23 | 2013-12-17 | 55 | habis | | 4 | 2012-01-14 | 2015-01-23 | 2013-12-17 | -402 | aktif | +----+--------------+---------------+------------+---------+--------+ 4 rows in set (0.00 sec) mysql> -- -------------------------------------- mysql> -- YAAAYYY !!! BERHASIL !!! mysql> -- Silakan gunakan query terakhir dalam program php Anda mysql> -- --------------------------------------
Walaupun contoh di atas menggunakan database MySQL, namun SQL yang ada bisa juga diterapkan di database lain seperti database PostgreSQL.
Semoga berguna………… (y)