Structure Query Language atau biasa disebut SQL bukan merupakan hal baru dalam dunia komputer. SQL adalah sebuah bahasa yang dipergunakan untuk mengakses data dalam basis data relasional. Bahasa ini secara de facto merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua server basis data yang ada mendukung bahasa ini untuk melakukan manajemen datanya.
Ada beberapa jenis sintak dalam bahasa ini, namun biasanya digolongkan menjadi 3 bagian yaitu :
1.DDL (Data Definition Language), adalah baasa-bahasa SQL yang digunakan ntuk membuat, memanipulasi atau menghapus skema yang ada didalam database. Contohnya adalah : create, drop, add, dll
2.DML ( Data Definition Laguage), adalah bahasa-bahasa SQL yang digunakan untuk memanipuasi data yang terdapat didalam database seperti menambah, menghapus dan mengubah data. Contohnya adalah : insert, delete dan update.
3.DCL (Data Control Language), adalah bahasa-bahasa SQL yang digunakan untuk mengatur user SQL. Contohnya adalah : create user, drop user.
Namun dalam melakukan penerapan, kita terkadang menemui kesulitan untuk beberapa kasus seperti berikut:
Ada dua buah tabel yang pertama adalah tabel barang dengan struktur berikut :
Tabel barang
-------------------------------
Id_brg | nm_brg | harga |
-------------------------------
001 | sabun | 1000 |
002 | odol | 2000 |
003 | sikat | 2000 |
004 | tisu | 2000 |
------------------------------
Tabel brg_promosi.
------------------------------------------------------
id_brg_promo | id_promo | id_brg | diskon
------------------------------------------------------
B01 | P01 | 001 ! 10
B02 | P01 | 002 ! 20
B03 | P02 | 003 ! 20
Tabel promosi.
----------------------------------------------------------------
id_promo | nama_pro | tgl_mulai | tgl_berakhir
-----------------------------------------------------------------
P01 | Gebyar xxx | 2010-04-01 ! 2010-05-01
P02 | ultah xxx | 2010-04-15 ! 2010-05-01
----------------------------------------------------------------
Ket : tabel diatasa sengaja dibuat sederhana karena kita tidak akan membahas normalisasi disini, selain itu, kolom id_brg_promo berfungsi sebagai kunci primer pada tabel brg_promosi dimana tabel ini akan dihubungkan dengan tabel barang dan tabel promosi. Id_promo pada tabel promosi dan id_brg pada tabel barang juga merupakan kunci utama pada tabel masing-masing
Suatu ketika, saya ingin mencoba mendapatkan daftar barang yang tidak sedang dalam kondisi tidak dalam keadaan promosi/diskon dalam kurun waktu tertentu dimana data harus diambil dari ketiga tabel sumber.
Awalnya saya berusaha menggunakan kode berikut :
”select nm_brg, harga from barang, promosi, brg_promosi where barang.id_brg<>brg_promo.barang.id_brg and brg_promosi.id_brg_promo=promosi.id_brg_promo and tgl_mulai>2010-04-01 and tgl_berakhir<2010-05-01”
Dari kode diatas saya beramsumsi bahwa data yang tidak ada pada tabel brg_promo akan ditampilkan. Namun dugaan saya salah. Karakter tidak sama dengan atau ”<>” membuat SQL menampilkan semua data.!! TnT
Hasil tampilan query yang tidak diharapkan
---------------------
nm_brg | harga |
---------------------
sabun | 1000 |
odol | 2000 |
sikat | 2000 |
tisu | 2000 |
--------------------
Sebagai programmer kelas kakap saya tidak putus asa (NARSIS MODE ON, wakkakaka). Saya mengingat sekitar 2 tahun lalu ketika saya mendalami SQL secara extreme skitar 12 jam sehari.
Akhirnya saya mendapat jawaban tersebut yaitu dengan menggunakan sintak berikut :
NOT EXIST
Dengan menggunakan sintax tersebut, maka penulisan kodenya akan menjadi seperti ini:
”select nm_brg, harga from barang where WHERE NOT EXIST (select nm_brg, harga from barang, promosi, brg_promosi where barang.id_brg<>brg_promo.barang.id_brg and brg_promosi.id_brg_promo=promosi.id_brg_promo and tgl_mulai>2010-04-01 and tgl_berakhir<2010-05-01)”
Dengan menggunakan kode seperti diatas, maka keinginan saya untuk memperoleh data barang yang tidak diskon pun berhasil dilaksanakan.

---------------------
nm_brg | harga |
---------------------
tisu | 2000 |
--------------------
SELAMAT MENCOBA..!!
Posting Komentar