Catatan Seorang Prajurit Kecil

Ikon

biarlah semua itu berjalan sesuai "skenario" NYA – jika kau telusuri, semua logika itu akan kau temukan

PostgreSQL 8.3 Row Constructor


Important:

This article just for share and reminder for me when I forget, so if you have know about it, close this article and go to sleep..;-)

Row Constructor merupakan salah satu fungsi yang cukup berguna pada DBMS PostgreSQL yang digunakan untuk menggabungkan beberapa field menjadi sebuah field (versi saya sendiri), untuk pengertian formilnya, silahkan lihat di http://wiki.postgresql.org/wiki/Main_Page atau manual bawaan PostgreSQL pada saat installasi. Jika masih bingung dengan pengertian tersebut, mendingan langsung aja terjun ke teknisnya, oke gampangnya seperti ini, jika kita mempunyai tabel dengan struktur seperti berikut:

dan kita menginginkan untuk menampilkan record yang sama seperti yang sudah ditandai tersebut, kita bisa menggunakan fungsi Row yang digabungkan dengan fungsi aggregative COUNT.

Seperti yang kita ketahui, fungsi COUNT pada PostgreSQL tidak bisa melakukan penghitungan lebih dari satu record, contoh:

SELECT COUNT(hari, sesi) FROM tabel

Query diatas, jika kita execute, akan menampilkan pesan Error, sehingga kita tidak bisa menggunakan secara langsung fungsi COUNT tersebut untuk melakukan filter hari dan sesi yang sama yang > 1 record, Nah untuk itu kita bisa menggunakan fungsi ROW dimana kita akan menggabungkan field hari dan sesi menjadi satu field dengan contoh seperti berikut:

SELECT COUNT(ROW(hari, sesi)) AS j, hari, sesi FROM tabel

GROUP BY hari, sesi

Sehingga jika kita execute, query diatas akan menampilkan record seperti berikut:

Nah, jika sudah didapatkan hasil seperti disamping, untuk menghasilkan record yang mempunyai hari dan sesi yang sama lebih dari 1 record, kita cukup melakukan join dengan menggunakan fasilitas subquery yang dimiliki oleh PostgreSQL, contoh:

SELECT tb1.hari, tb1.sesi, kd_matakuliah FROM (
SELECT hari, sesi, kd_matakuliah
FROM tabel
) AS tb1

INNER JOIN

(
SELECT COUNT(ROW(hari, sesi)) AS j, hari, sesi FROM tabel
GROUP BY hari, sesi
) AS tb2

ON tb1.hari = tb2.hari AND tb1.sesi = tb2.sesi
WHERE
tb2.j > 1

Jika kita execute query diatas, maka akan menampilkan record hari dan sesi yang sama yang > 1 record. Maaf jika masih bingung, soalnya bukan penulis asli…hehehe..

 

 

 

 

Filed under: Database and DBMS, ,

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

%d blogger menyukai ini: