Asah Otak : Bermain dengan Subquery

Forum PHP indonesia
Forum PHP indonesia

Sore2 setelah shalat Ashar iseng buka facebook nemu ngelihat ada yang tanya di forum php tentang query .

Menarik pertanyaannya, sekilas hasilnya simple , tapi dicoba lumayan juga butuh effort mikir.

Akhirnya saya ajak agus buat iseng2 nyoba mecahin.

“Gus ini ada kasus bagus deh buat latihan asah otak”

saya dan agus pun utak atik…

Sudah hampir setengah jam berlalu….

Dan hasilnya…. sore itu kita berdua belum bisa mecahin kasus ini dengan sempurna, cuma agus yang hampir nemu, dia memang jago logika nya di atas saya.

Akhirnya daripada pusing2 mecahin kasus punya orang lain lebih baik saya nerusin aja ah kerjaan kantor yang lebih penting.

“udah gus buat nanti aja kalau lagi iseng, itu butuh konsentrasi lebih”

“Iya jal, butuh konsentrasi lebih nih”

Eh pagi tadi saya datang ke kantor sudah ada agus dan dia bersorak “Jal aku udah temu”, bener dah tuh orang  lebih pinter dari saya.

Akhirnya penasaran, saya coba lagi utak atik , awalnya saya gambar di kertas hasilnya dan saya uraikan di kertas

“Tampilkan kelas, nama, ipk masing2 kelas yang mempunyai nilai ipk tertingi”

itu memang salah satu cara saya menguraikan suatu kasus, saya tulis di kertas uraiannya.

Dan setelah utak atik utak atik di phpmyadmin…tara……berhasil

Ternyata memang butuh istirahat semalam buat ngademin kepala, kemarin sudah penuh kali dari pagi, mungkin juga karena sebelumnya saya uraikan kemarin main hajar aja langsung query.

Yuk ah langsung ke kasus

Ada dua table

Table pertama : mahasiswa

Table mahasiswa
Table mahasiswa

Table kedua : ipk

Table IPK
Table IPK

Dan permintaan dari user adalah :

“Tampilkan nama mahasiswa yang ipk nya tertinggi di masing-masing kelas”

Ini query saya :

SELECT mahasiswa.nama, result.kelas, result.terbesar FROM mahasiswa
INNER JOIN ipk ON mahasiswa.id = ipk.mahasiswa_id
INNER JOIN
( SELECT kelas, MAX(ipk.ipk) AS terbesar FROM `mahasiswa` INNER JOIN ipk ON mahasiswa.id = ipk.mahasiswa_id GROUP BY kelas) AS result ON mahasiswa.kelas = result.kelas AND ipk.ipk = result.terbesar

Dan ini hasilnya tara…:

Hasil Query
Hasil Query

Ternyata saya cocokkan dengan agus, query saya dengan agus hampir sama karena logika pemecahan kasusnya ternyata sama.

Kesimpulan saya :

  1. Kalau kita mentok mungkin kita butuh istirahat, ngga perlu dipaksain
  2. Dengan menuliskan uraian kasus di kertas akan lebih memudahkan dan mempercepat penyelesaian masalah
  3. Subquery atau Query dalam Query atau bisa juga disebut Query bersarang adalah salah satu hal penting yang perlu dipelajari untuk memecahkan kasus yang sulit.

Thanks to https://www.facebook.com/chietra.chandrasari?fref=nf yang sudah membuat saya teman saya , agus berlatih asah otak.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s