Day 36: Hierarchical Queries


Learning In HomeOriginal Date: 18 Februari 2009

Sebagai latihan terakhir di bulan ini yang berkaitan dengan database Oracle, aku akan mencoba memakai hierarchical queries. Sebagai contoh, aku memiliki tabel tbl_kategori dengan struktur sebagai berikut:

CREATE TABLE TBL_KATEGORI ("ID" NUMBER(5,0), "NAMA" VARCHAR2(100 BYTE), "SUPER_KATEGORI" NUMBER(5,0));

Pada tabel ini, setiap kategori dapat memiliki sub-kategori dengan tingkatan yang tidak dibatasi. Untuk menghasilkan query yang secara otomatis mengurutkan berdasarkan hierarki, aku menggunakan perintah:


SELECT * FROM tbl_kategori START WITH super_kategori IS NULL CONNECT BY PRIOR id = super_kategori;

Pada bagian START WITH, aku memberikan kondisi super_kategori IS NULL, yang menunjukkan bahwa yang menjadi root (kategori paling atas) adalah kategori dengan nilai field super_kategori berupa NULL.

Pada bagian CONNECT BY, aku memberikan kondisi PRIOR id = super_kategori yang menunjukkan bagaimana setiap kategori saling berhubungan membentuk hierarki.

Salah satu pseudocolumn yang tersedia saat memakai hierarcial query adalah LEVEL. Sebagai contoh, aku bisa hanya men-select kategori yang berada pada level 2 saja (tepat dibawah root):


SELECT
*
FROM
tbl_kategori
WHERE
LEVEL = 2
START WITH
super_kategori IS NULL
CONNECT BY
PRIOR id = super_kategori;

Pseudocolumn lain adalah CONNECT_BY_ISLEAF yang akan bernilai 1 jika baris tersebut tidak memiliki hierarki di bawahnya lagi. Sebagai contoh, aku dapat men-select semua kategori yang tidak memiliki sub-kategori lagi, dengan perintah:


SELECT
*
FROM
tbl_kategori
WHERE
connect_by_isleaf = 1
START WITH
super_kategori IS NULL
CONNECT BY
PRIOR id = super_kategori;

Perihal Solid Snake
I'm nothing...

One Response to Day 36: Hierarchical Queries

  1. ELFARIDI mengatakan:

    wah,, ini yang aku cari makasih mas,,🙂 salam kenal… aku link -blog anda ya ,,mari mampir dan komen di blog say😉

Apa komentar Anda?

Please log in using one of these methods to post your comment:

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: