2017-01-21 9 views
-1

背景... 既存のデータ変換の一部として、限定的な情報でアドホック階層を移入するために変換する必要があります。階層にデータを移入するために必要なOracleクエリ

現在、私たちは、このアドホック階層のユーザであると扱われるCXOハウスの指数メンバーを持っています。 彼らは目的のために従業員の階層的な組み合わせを選択しています。

これらの階層は、親子関係のみを持ち、組織階層のどのレベルでも構いません。 言い換えれば、子供は彼が彼のために部下を持っていなければ親になることはありません。

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. 

他にもHeadofDepartment(HOD)、HierarchyDetails(HD)、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-asking-a-question/285557#285557) –

答えて

0

これは割り当てなので、私は「あなたにSQLを渡す」ことはしません。だから、

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

、テーブルから選択する:

あなたは基本的なフォーマットを持つ階層的なクエリを使用する必要がありますか?さて、あなたのテーブルを見てOrgEmpHierarchyOH_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

関連する問題