Berkenalan Dengan PostgreSQL Array, Dan Mengkonversikan ke PHP Array

 Saya tak menyangka ternyata ada bentuk data array di PostgreSQL yang bisa dipanggil dengan Sub Select pada satu query. Khusus untuk PostgreSQL seperti yang ditulis pada artikel mas mkyong . DBMS seperti MySQL tidak bisa melakukannya. Selebihnya mengenai data array di PostgreSQL sobat bisa membaca di dokumentasi resmi postgresql – nya.

Oke, langsung aja penjelasannya.
Dimulai dari sebuah kasus, dimana saya ingin mengambil data, dengan kondisi nya one to many seperti pada gambar dibawah (Dibaca dari kiri ke kanan).

one to many relation

Sebenarnya data one-to-many seperti diatas bisa di ambil menggunakan query sql biasa.
Contoh :

select u.url, (select c.categoryid from category c
where c.categoryid = u.categoryid) from url u

Namun outputnya tak sesuai harapan, yang muncul jadinya multi row

url | categoryid
———————
1   |  1
1   |  2
2   |  1

Sedangkan yang dibutuhkan adalah dengan struktur seperti ini

url | categoryid
———————
1   |  1,2
2   |  1

Dan ternyata PostgreSQL bisa menjawabnya, dengan query subselect dilanjutkan dengan tulisan array. Hal tersebut bisa dilakukan, ini dia bentuk querynya:

select u.url, (select array(select c.categoryid from category c
where c.categoryid = u.categoryid))as categoryid from url u

Dan ini dia outputnya:

url | categoryid
———————
1   |  {1,2}
2   |  1

Jadi bentuk PostgreSQL array mirip seperti JSON, namun untuk menkonversikannya tidak hanya menggunakan fungsi json_decode(), ada trik tersendiri ini dia.

<?php
$pgsqlArr = ‘{1,2,3,4}’;
preg_match(‘/^{(.*)}$/’, $pgsqlArr, $matches);
$phpArr = str_getcsv($matches[1]);
print_r($phpArr);
?>

Dengan begitu data berhasil dibentuk ke dalam array PHP, dan bisa digunakan PHP.

Output:

 Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)

Selesai sudah, penjelasan saya mengenai Berkenalan Dengan PostgreSQL Array, Dan Mengkonversikan ke PHP Array . Jika ada yang ingin ditanyakan, sobat bisa mengirimnya lewat komentar post ini.

Sumber :
http://www.mkyong.com/database/convert-subquery-result-to-array/
http://php.net/manual/en/ref.pgsql.php

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.