Tuesday, April 19, 2016

Alternative group by postgreSQL di codeigniter

Alternative group by postgreSQL di codeigniter

Beberapa waktu lalu saya mengalami error saat group by data postgreSQL di codeigniter. Ada beberapa kondisi di mana terjadi error, tapi disini saya tidak membahas itu, sekarang saya hanya akan membahas tentang alternative group by postgreSQL di codeigntier.

Kode normal untuk group by :

$this->db->select("*");
$this->db->from("my_table");
$this->db->group_by("field_name");

Namun saya pernah beberapakali menggunakan cara di atas error terus. Lalu untuk mengatasi hal itu ada alternative-nya, berikut adalah alternative-nya :

$this->db->select("DISTINCT ON (field_name) field_name, ... field_name[N]", FALSE);
$this->db->from("my_table");

Query biasa :

SELECT DISTINCT ON (field_name) field_name, ... field_name[N] FROM my_table ORDER BY field_name;

Fungsi distinct gunanya untuk menghilangkan rocord yang ganda, gak beda jauh dengan group by.

Agar makin paham, saya punya kasus kecil, di mana saya punya tabel dengan nama "siswa". Tabel siswa ini mempunyai 4 field yaitu : id_siswa, nama_lengkap, umur, alamat.

Kasus : saya ingin meng-group data umur, lalu di order berdasarkan id_siswa, dan field yang di tampilkan adalah field id_siswa, nama_lengkap dan umur saja.

Query Codeigniter :

$this->db->select("DISTINCT ON (umur) id_siswa, nama_lengkap, umur", FALSE);
$this->db->from("siswa");
$this->db->order_by("id_siswa","ASC");

Query biasa :

SELECT DISTINCT ON (umur) id_siswa, nama_lengkap, umur FROM siswa ORDER BY id_siswa ASC;

Mungkin cukup sekian pembahasan kali ini, komen yah jika ada yang tidak paham :)

Auf wiedersehen :)


Saya hanya seorang "newbie" yang baru bisa ngoding lohor kemarin.


EmoticonEmoticon