Untuk hierarchical query, mungkin bisa pake LEVEL pada klausa "Start With 
Connect By" untuk mendapatkan generasi dan "Sys_Connect_By_Path" untuk 
mendapatkan nama dari manager tanpa harus melakukan self join. 

select mgr_id,
       
substr(sys_connect_by_path(nama,'/'),INSTR(sys_connect_by_path(nama,'/'),substr(nama,1,1))-(length(nama)+1),length(nama))
 manager,
       empno,
       nama,
       LEVEL-1 Generasi
 from pegawai
where mgr_id <> '00000001'
start with mgr_id = '00000001'
connect by prior empno=mgr_id


maaf klo query nya agak berantakan... dari sisi cost querynya sepertinya lebih 
bagus daripada melakukan self join ... tp coba dicek saja lagi hehehe.. semoga 
bisa membantu...
CMIIW


Regards
Ario



--- Pada Rab, 7/7/10, Abe <[email protected]> menulis:

Dari: Abe <[email protected]>
Judul: [indo-oracle] tanya  Hierarchical Query
Kepada: [email protected]
Tanggal: Rabu, 7 Juli, 2010, 3:59 PM







 



  


    
      
      
      Dear All,



saya mau tanya ttg query nich.



saya punya data 



empno    nama    mgr_id

-------------------------------

00829204 ZIKI    00664797

00664797 Yudi    00006256

00006256 Meri    00655146

00655146 Lina    00402241

00666661 Budi    00664797

00402241 Wira    00000001



saya ingin query yg bisa menghasilkan seperti



empno    nama   GetFrom  GetName Generasi

00402241 WIRA   00655146 LINA     1

00655146 LINA   00006256 MERI     2

00006256 MeRISA 00664797 YUDI     3

00664797 YUDI   00829204 ZIKI     4

00664797 YUDI   00666661 BUDI     4



- Lina adalah Generasi 1 dari Wira

- Meri adalah Generasi 1 dari Lina dan Generasi 2 dari Wira

- Yudi adalah Generasi 1 dari Meri, Generasi 2 dari Lina dan Generasi 3 dari 
Wira

- Ziki adalah Generasi 1 dari Yudi, Generasi 2 dari Meri, Generasi 3 dari Lina 
dan Generasi 4 dari Wira



mohon dong para pakar oracle untuk memecahkan masalah saya.



terimakasih.





    
     

    
    


 



  







[Non-text portions of this message have been removed]

Kirim email ke