16
Hierarchical Retrieval MI2154 – SQL LANJUT Semester Genap 2013/2014 Dedy Rahman Wijaya, S.T., M.T., OCA [email protected]

Hierarchical Retrieval

Embed Size (px)

DESCRIPTION

materi sql lanjut

Citation preview

Hierarchical Retrieval

MI2154 – SQL LANJUTSemester Genap 2013/2014

Dedy Rahman Wijaya, S.T., M.T., [email protected]

Tujuan Pembelajaran

• Memahami konsep hierarchical query• Mampu membuat report berdasarkan tree-

structured• Mampu memformat data dalam bentuk hirarki

Contoh Struktur Hirarki

Contoh Data Hirarki

• Data silsilah keluarga• Peternakan/ Pertanian (pemuliaan spesies)• Data manajemen perusahaan• Data manufaktur (perakitan suatu produk)• Data riset tentang evolusi (species

development)

Data Employees• Data employees tsb

memiliki struktur hirarki• Tiap pegawai memiliki

atasan kecuali satu orang (King)

Hierarchical Queries

• LEVEL: menghasilkan nilai 1 jika data root, 2, 3, dst jika data child• START WITH: menunjukkan dari data mana hirarki dimulai• CONNECT BY PRIOR: menspesifikasikan kolom yang menunjukkan

hubungan antara induk dengan anak

SELECT [LEVEL], column, expr...FROM table[WHERE condition(s)][START WITH condition(s)][CONNECT BY PRIOR condition(s)] ;

Starting Poin

• Menspesifikasikan kondisi awal hirarki

• Contoh:– ... START WITH manager_id IS NULL– … START WITH employee_id = ‘110’– … START WITH last_name = ‘Austin’– …START WITH employee_id = (select employee_id

from employees where last_name=‘Whalen’)

START WITH column1 = value

Mendefinisikan hubungan induk dan anak

• Top down: CONNECT BY PRIOR employee_id = manager_id• Bottom Up: CONNECT BY PRIOR manager_id = employee_id

CONNECT BY PRIOR column1 = column2

Top down Column1 = Parent KeyColumn2 = Child Key

Bottom up Column1 = Child KeyColumn2 = Parent Key

Top Down

SELECT level, employee_id, last_name, job_id, manager_idFROM employeesSTART WITH employee_id = 101CONNECT BY PRIOR employee_id=manager_id;

SELECT last_name||' memiliki atasan '|| PRIOR last_name "Walk Top Down"

FROM employeesSTART WITH employee_id = 101CONNECT BY PRIOR

employee_id = manager_id;

Bottom Up

SELECT level, employee_id, last_name, job_id, manager_idFROM employeesSTART WITH employee_id = 101CONNECT BY PRIOR manager_id=employee_id;

SELECT last_name||' memiliki bawahan '|| PRIOR last_name "Walk Bottom Up"

FROM employeesSTART WITH employee_id =

101CONNECT BY PRIOR

manager_id=employee_id;

Tingkatan data menggunaka LEVELPseudocolumn

Pemotongan Hirarki• Menggunakan klausa

WHERE untuk menghapus node

• Menggunakan klausa CONNECT BY untuk menghapus cabang

Referensi

• Greenberg, N. (Edition June 2001). Oracle Database 9i: Introduction to Oracle9i: SQL. Nancy Greenberg – BAB 19