2017-01-21 7 views
-1

배경 ... 기존 데이터 변환의 일부로 제한된 정보로 Adhoc 계층 구조를 채우기 위해 변환해야합니다.계층 구조를 채우는 데 필요한 Oracle 쿼리

현재 Adhoc 계층 구조의 사용자로 취급되는 CXO House의 카운트 가능한 멤버가 있습니다. 목적을 위해 직원 계층 적 조합을 선택할 수 있습니다.

이러한 계층 구조는 상위 - 하위 관계 만 있으며 조직 계층 구조의 모든 수준에있을 수 있습니다. 다른 말로하면 ... 자녀는 그에게 부하 직원이 없다면 결코 부모가 될 수 없습니다.

We have an employee table of ORG EmpHierarchy (OH) that has Organizational hierarchies. 
But, which can't be directly used but we can take help of these columns to form our logic. This table is no way related to current model. 

우리는 HD와 같은 몇 가지 다른 테이블 HeadofDepartment (HOD), HierarchyDetails (HD) 및 스테이지 테이블이있다.

OrgEmpHierarchy (OH) Has: 
OH_ID - Organizational HierarchyID (DB Sequence) 
OH_PID - (Parent ID) one of the values from previous column. 
OH_EmpID - Organizational EmpID. 

HeadofDepartment (HOD) Has: 
HOD_ID - Head of Dept. ID (DB Sequence) 
HOD_EmpID - Organizational EmpID. 

HierarchyDetails (HD) Has: 
HD_ID - Hierarchy Details ID (DB Sequence) 
HD_PID - (ParentID) of of the values from previous column. 
HD_HOD_ID - (Foreign Key) HOD_ID from HOD. 
HD_EmpID - Organizational EmpID. 

우리는 계층 구조 세부 사항 (HD) 테이블의 부장 (HOD)에서 각 HOD_ID의 계층 구조를 채울 필요가있다. HD_ID, HD_HOD_ID, HD_Emp_ID에 대해 값을 HD로 채울 수 있습니다. HD_PID는 NULL로 채워집니다.

enter image description here

지금 OH의 도움으로, HOD 나는 HD 테이블에 HD_PID에서 계층 구조를 채울 필요가있다.

일부 사용자가 HD_PID를 udp하는 Oracle SQL/PLSQL 쿼리를 제공 할 수 있습니까?

+0

** [편집] ** 귀하의 질문과 샘플 데이터를 추가하고 해당 데이터를 기반으로 예상 출력. [** 포맷 된 텍스트 **] (http://stackoverflow.com/help/formatting)하시기 바랍니다. [스크린 샷 없음] (http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload-images-of-code-on-so-ask-a-question/285557 # 285557) –

답변

0

이것은 할당이므로 "SQL"을 제공하지 않을 것입니다. 그래서

SELECT some_columns 
FROM a_table 
START WITH some_condition 
CONNECT BY PRIOR some_column = some_other_column 

, 테이블에서 선택 :

당신은 기본적인 형식은 계층 적 쿼리를 사용해야합니다? 음, 테이블을보고 OrgEmpHierarchy에는 OH_PID (부모 ID)과 OH_EmpID 사이의 관계가 있으므로이 테이블을 사용하고 해당 열에 연결해야합니다.

그래서 무엇부터 시작해야합니까? 데이터가 없으면 말하기는 어렵지만 아마도 상위 계층은 소유자/이사 또는 부서장입니다. 후자의 경우 INHeadofDepartment 테이블의 직원부터 시작할 수 있습니다.

무엇을 선택해야합니까?

  • 당신은 그들이 계층 적 관계를 정의 당신이 선택할 수 있도록 쿼리를 연결하는 OH_PIDOH_EmpID 열을 사용하고 있습니다.
  • ROWNUM을 사용하여 시퀀스를 선택하거나 실제 시퀀스 YOUR_SEQUENCE.NEXTVAL을 사용할 수 있습니다.
  • 당신은 부서장을 알아야합니다 - 당신이 그 부서장과 함께 계층 구조를 시작한다고 가정하면 계층 구조의 "루트에 연결"할 수있는 매우 간단한 연산자가 있습니다 - 검색은 구문에 대한 사용법을 알려줍니다.

테이블에 삽입하려는 경우를 제외하고는 거의 모든 부분을 다루고 있습니다.그럼, 사용 :

INSERT INTO HierarchyDetails (columns) 
SELECT ... 
+0

연습 프로그램 지정이 아닙니다. Hierarchy (HD)에서 HOD (Head of Department)의 각 HOD_ID에 대한 계층 구조를 준비해야합니다. – user1089783