Pemrograman

Bahasa

Framework

Peralatan

Info

Query MySQL untuk menentukan pemenang

– 03 August 2015
Saya sedang mengembangkan aplikasi web untuk pemilihan ketua BEM dengan framework CodeIgniter. Aplikasi ini hampir selesai. Namun, ada satu hal yang masih membingungkan, yaitu penentuan pemenang setelah pemilihan selesai.


Query pertama‒menurut saya sesuai‒yang didapatkan dari pencarian solusi di google adalah sebagai berikut:
SELECT calon_idcalon, calon.nama AS nama, calon.foto AS foto, COUNT(calon_idcalon) AS jumlah FROM kotak_suara, calon WHERE calon_idcalon = calon.nim GROUP BY calon_idcalon ORDER BY jumlah DESC LIMIT 1
Hasil yang didapatkan dari query tersebut, adalah satu orang pemenag dengan suara terbanyak. Tapi, bagaiaman kalau ada dua orang yang memiliki sura terbanyak. Kalau menggunakan query di atas, hasilnya tetap satu orang.

Akhirnya, saya diberikan query manjur dari salah satu member group MySQL Indonesia. Query sakti ini dapat menampilkan semua pemenang dengan perolehan suara yang sama.
SELECT calon_idcalon, calon.nama AS nama, calon.foto AS foto, COUNT(calon_idcalon) AS jumlah FROM kotak_suara, calon WHERE calon_idcalon = calon.nim GROUP BY calon_idcalon HAVING COUNT( calon_idcalon) >= ( SELECT COUNT( calon_idcalon ) AS SUM FROM kotak_suara GROUP BY calon_idcalon ORDER BY SUM DESC LIMIT 1 )