Halo sahabat JiwaCoding apa kabar? Semoga kabar baik dan tetap semangat untuk terus ngoding ya ☺
Sepertinya aplikasi yang sedang kamu bangun sedang tidak baik-baik saja.
Kamu sedang berusaha mencari solusi Query Error Number 1055 bukan? Kamu sudah
berada di postingan yang tepat nih.
Disini JiwaCoding akan memberikan beberapa cara mengatasinya.
Tidak perlu panjang lebar mari langung ke topik permasalahannya. JiwaCoding memiliki contoh pesan query error seperti berikut:
Error Number: 1055
Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column '<DB_NAME>.C.nama_jurusan' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Berikut contoh perintah query yang JiwaCoding jalankan di aplikasi:
SELECT `B`.`id_kelas`, `B`.`jenjang`, `C`.`nama_jurusan` FROM `tbl_jadwal_ajar` `A` JOIN `tbl_kelas` `B` ON `A`.`idkelas`=`B`.`id_kelas` JOIN `tbl_jurusan` `C` ON `B`.`jurusan_id`=`C`.`id_jurusan` WHERE `A`.`idguru` = '1007' AND `A`.`idtahun` = '6' AND `A`.`idsemester` = '2' GROUP BY `B`.`id_kelas` ORDER BY `B`.`jenjang` ASC
Di sini JiwaCoding ingin menampilkan informasi id_kelas,jenjang,nama_jurusan dari hasil join 3 tabel. Tetapi muncul error SELECT list is not in GROUP BY bla..bla..bla. Error ini muncul di MYSQL Versi 5.7+. Karena di versi ini secara default sql_mode only_full_groub_by diaktifkan.
Oke solusi pertama mari kita perbaiki query di atas dengan menambahkan fungis ANY_VALUE. Sehingga query kita menjadi seperti ini:
SELECT `B`.`id_kelas`, `B`.`jenjang`, ANY_VALUE(`C`.`nama_jurusan`) AS nama_jurusan FROM `tbl_jadwal_ajar` `A` JOIN `tbl_kelas` `B` ON `A`.`idkelas`=`B`.`id_kelas` JOIN `tbl_jurusan` `C` ON `B`.`jurusan_id`=`C`.`id_jurusan` WHERE `A`.`idguru` = '1007' AND `A`.`idtahun` = '6' AND `A`.`idsemester` = '2' GROUP BY `B`.`id_kelas` ORDER BY `B`.`jenjang` ASC
Ya, dengan menambahkan fungsi ANY_VALUE sepertinya masalah di error ini berhasil diatasi. Oke, berarti masalah kita sudah selesai ya. Tapi bagaimana kalau query dengan error semacam ini sudah banyak ditulis di aplikasi kita? Sebenarnya cara paling mudah yaitu hapus saja value only_full_groub_by pada variable sql mode. Caranya jika sahabat JiwaCoding menggunakan phpMyAdmin, silakan pilih menu Variables.
Dengan begitu error query pada aplikasi sudah berhasil kita atasi.
Baik mungkin itu beberapa solusinya semoga cukup membantu para sahabat JiwaCoding.
Referensi:
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
Comments
Post a Comment