8.22.2008

Sebuah SQL Statement untuk Dynamic Search

Tulisan ini didedikasikan untuk Pak Firman, bos saya dulu di Jatis Ecom. Copyright ide ini milik beliau.

Pernah punya form yang isinya parameter search? Yang field-nya boleh diisi boleh tidak? Terus SQL statement nya nggak ditanem di dalam koding? Say... pake ibatis atau web.config, app.config, setting.ini, sqlserver.properties? Galaxy developers, how are you guys today *loss focus*

Kalo SQL statement ditanem di dalam koding, remeh, tinggal pake IF, ya kan? Kalo SQL nya di luar? Mesti bikin banyak, sebanyak parameter search yang boleh kosong? Nggak dong.. pake aja parameter dummy.

Gini, anggap aja kita punya 2 parameter search, NAMA dan NIK. Dua-duanya boleh kosong. Anggap ada tabel pegawai, fieldnya NAMA, NIK, ALAMAT.

Maka SQL defaultnya akan begini:

SELECT nama, nik, alamat
FROM pegawai
WHERE nama = :parameter_nama: and
nik = :parameter_nik:

Jika isi parameter adalah string kosong alias '', maka query di atas bakal mengembalikan hasil karyawan dengan NIK = '' dan NAMA = ''. Padahal user maunya kalo isi parameter kosong, maka query harus mengembalikan hasil seluruh isi tabel.

Caranya? Ganti SQL nya dengan yang ini:

SELECT nama, nik, alamat
FROM pegawai
WHERE ( nama = :parameter_nama: OR 1 = :parameter_nama_kosong: ) and
( nik = :parameter_nik: OR 1 = :parameter_nik_kosong: )

Kalau NAMA = '', maka :paramater_nama_kosong: diisi 1. Otherwise, isi :parameter_nama_kosong: dengan apa saja selain 1. Lakukan hal yang sama untuk NIK dengan mengisi :parameter_nik_kosong:. Done.

Gimana? Got it?

0 comments:

 
Template by yummylolly.com