Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Temukan seluruh pohon dari akar yang memberikan simpul apa pun

Anda harus terlebih dahulu melintasi pohon untuk mendapatkan semua manajer lalu melintasi ke bawah untuk mengambil semua karyawan:

select level, employee_id, last_name, manager_id ,
       connect_by_root employee_id as root_id
   from employees
connect by prior employee_id = manager_id -- down the tree
start with manager_id in ( -- list up the tree
     select manager_id 
       from employees
     connect by employee_id = prior manager_id -- up the tree
     start with employee_id = 101
     )
;

Lihat http://www.sqlfiddle.com/#!4/d15e7/18

Sunting:

Jika simpul yang diberikan mungkin juga merupakan simpul akar, perluas kueri untuk menyertakan simpul yang diberikan dalam daftar simpul induk:

Contoh untuk simpul non-root:

select distinct employee_id, last_name, manager_id 
   from employees
connect by prior employee_id = manager_id -- down the tree
start with manager_id in ( -- list up the tree
     select manager_id 
       from employees
     connect by employee_id = prior manager_id -- up the tree
     start with employee_id = 101
     union 
     select manager_id -- in case we are the root node
       from employees
     where manager_id = 101
     )
;

Contoh untuk simpul akar:

select distinct employee_id, last_name, manager_id 
   from employees
connect by prior employee_id = manager_id -- down the tree
start with manager_id in ( -- list up the tree
     select manager_id 
       from employees
     connect by employee_id = prior manager_id -- up the tree
     start with employee_id = 100
     union 
     select manager_id -- in case we are the root node
       from employees
     where manager_id = 100
     )
;

Biola di http://www.sqlfiddle.com/#!4/d15e7/32



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle pilih dari beberapa tabel

  2. Setara dengan tabel eksternal Oracle di SQL Server

  3. Jalankan DDL dinamis dalam prosedur PL/SQL melalui izin peran penentu

  4. Bagaimana cara mengatur batas waktu koneksi di groovy sql?

  5. Oracle DateTime di Klausul Mana?