Upload
tria-paramadina
View
219
Download
3
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 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;
Pemotongan Hirarki• Menggunakan klausa
WHERE untuk menghapus node
• Menggunakan klausa CONNECT BY untuk menghapus cabang