填充层次结构所需的Oracle Query

时间:2017-01-21 18:08:53

标签: sql oracle hierarchical-query

...背景 作为现有数据转换的一部分,我们需要转换为使用有限信息填充Adhoc Hierarchies。

目前,我们有来自CXO House的手指可数成员被视为此Adhoc Hierarchies的用户。 他们可以选择Employee Hierarchical组合用于某个目的。

这些层次结构只有父子关系,可以在任何级别的组织层次结构中。 换句话说......除非他有下属,否则孩子永远不会成为父母。

 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中为HD_ID,HD_HOD_ID,HD_Emp_ID填充值。 HD_PID填充为NULL。

enter image description here

现在在OH的帮助下,HOD我需要在高清表格中填写HD_PID中的Hierarchies。

有人可以给我一个用于更新HD_PID的Oracle SQL / PLSQL查询吗?

1 个答案:

答案 0 :(得分:0)

由于这是一项任务,我不打算给你#"。

您需要使用具有基本格式的分层查询:

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

那么,哪个表可供选择?好吧,查看表OrgEmpHierarchy包含OH_PID(父ID)和OH_EmpID之间的关系,因此您应该使用此表并连接这些列。

那么,你应该从什么开始呢?没有任何数据,很难说,但可能是层次结构的顶层是业主/董事或部门负责人 - 如果是后一种情况,那么你可以从那些IN的员工开始HeadofDepartment表。

选择什么?

  • 您正在使用OH_PIDOH_EmpID列来连接查询,以便您可以在定义层次关系时选择这些。
  • 您可以使用ROWNUM选择序列,也可以使用实际序列YOUR_SEQUENCE.NEXTVAL
  • 您需要了解部门主管 - 假设您与部门负责人一起开始层级,那么有一个非常简单的操作员可以让您通过根管连接#34;层次结构 - 我确定一个简单的网络搜索会告诉你它的语法用法。

除了你想要将它插入表格之外,它几乎涵盖了所有内容。所以,使用:

INSERT INTO HierarchyDetails ( columns )
SELECT ...