2016-07-18 1 views
-4

우리 시스템에서 3 레벨의 사용자가 있다고 가정 해 봅시다. 하나는 ordinary staffs이고 다른 하나는 two supervisors이고 마지막 하나는 president 인 경우 가장 높습니다. 수퍼바이저는 시스템에 대한 요청을 보낼 때마다 일반 직원의 승인을받는 반면, 회사와 관련된 요청을 보낼 때마다 감독관과 일반 직원의 요청을 승인 할 수 있습니다.하나의 테이블에서 행을 계층 적 양식으로 선택하려면 어떻게합니까?

는 I 테이블 employee_information_tbl가 있다고 가정 한 열의 값은 job_pos_status5 = ordinary staff, 6= supervisors7 = president이다.

id name job_pos_status approver_id

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

001 John Peter 7 001

002 Anne Sy 6 001

003 Abigail Sam 6 001

004 Paul Top 5 002

,691,363 (210)

005 Lenny Bots 5 003

006 Steve Max 5 002

007 Max Collins 5 003

008 Anne Dy 5 003

009 Maine Mendoza 5 002

질문 : all 쿼리를 사용하지 않고 모든 레코드 (즉 대통령 액세스)을 선택할 수있는 방법
, 그러나 t 다음에 오는 논리적 인 하나 그는 조직의 계층 구조입니까?

+1

하나의 질문에 여러 질문을 섞지 마십시오. 개별적으로 질문하십시오. 그렇지 않으면 답변이 혼합 될 수도 있습니다. – Shadow

+0

요점은 주어진 계층을 기반으로 쿼리를 선택하는 방법입니다. 방금 여러 가지 질문을했습니다. :) – user3819290

+0

아니요, 첫 번째는 단순한 쿼리로 어디에서나 '또는'조건을 사용하거나 두 개의 단순한 조건을 합집합과 결합한 것입니다. 두 번째 것은 더 복잡합니다. 특히 수준이 올라가더라도 일반 쿼리를 적용하려는 경우가 있습니다. – Shadow

답변

0
You want the query based on hierarchy, please check this : 


create table employee_information_tbl (id nvarchar(3), name nvarchar(50), job_pos_status int, approver_id nvarchar(3)) 

insert into employee_information_tbl 
select '001', 'John Peter', 7, '001' 
union all 
select '002', 'Anne Sy', 6, '001' 
union all 
select '003', 'Abigail Sam', 6, '001' 
union all 
select '004', 'Paul Top', 5, '002' 
union all 
select '005', 'Lenny Bots', 5, '003' 
union all 
select '006', 'Steve Max', 5, '002' 
union all 
select '007', 'Max Collins', 5, '003' 
union all 
select '008',' Anne Dy', 5, '003' 
union all 
select '009', 'Maine Mendoza', 5, '002' 

select a.id, a.name, 
     a.job_pos_status, 
     a.approver_id, 
     a.approver_id 
from employee_information_tbl a 
     Inner join (select distinct job_pos_status 
        from employee_information_tbl 
        ) b 
     on b.job_pos_status = a.job_pos_status 
order by b.job_pos_status desc, 
     a.approver_id, 
     a.id 

drop table employee_information_tbl 
관련 문제