oracle - Querying hierarchical data through SQL -


problem:

different ways of querying hierarchical data through sql querying subset of branch information.

case study :

employees table :

desc employees name           null     type          -------------- -------- ------------  employee_id    not null number(6)     first_name              varchar2(20)  last_name      not null varchar2(25)  manager_id              number(6)     department_id           number(4)     

premises:

president employee doesn't have manager i.e. null.

there leaf nodes eg developers manages none i.e. employee_id not in manager_id.

there 1rst line managers manages developers, 2nd line managers managers 1rst line , on.....

i managers below query:

select manager_id,   employee_id employees o exists   (select * employees o.employee_id = i.manager_id) , manager_id not null order o.manager_id,   o.employee_id; 

and president below:

select manager_id, employee_id     employees o     exists       (select * employees o.employee_id = i.manager_id)     , manager_id null     order o.manager_id,       o.employee_id; 

how should 2nd line managers through exists key word ?

how should 2nd line managers without using exists?

what different ways of getting hierarchical data ?

and regarding performance of queries.

this basic query gets in 1 go:

select employee_id, first_name, last_name,         case            when level = 1 'president'           when level = 2 '1st line manager'           when level = 3 '2nd line manager'           when connect_by_isleaf = 1 'developer'        end employee_type employees start manager_id null connect prior employee_id = manager_id 

the level pseudo column available in connect by query defines distance start (which defined start with). president has level = 1

if want 2nd line managers, can add where level = 3 statement. 1st line manager use where level = 2


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -