-1

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

目前,我们有一些来自 CXO House 的可数成员被视为此 Adhoc Hierarchies 的用户。他们可以出于某种目的选择员工分层组合。

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

 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 相同的 Stage Table。

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.

我们需要从 Hierarchy Details (HD) 表中的 Head of Department (HOD) 为每个 HOD_ID 填充 Hierarchy。我们能够在 HD 中为 HD_ID、HD_HOD_ID、HD_Emp_ID 填充值。HD_PID 填充为 NULL。

在此处输入图像描述

现在在 OH, HOD 的帮助下,我需要在 HD 表中的 HD_PID 中填充层次结构。

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

4

1 回答 1

0

由于这是一项任务,我不会“给你 SQL”。

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

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

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

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

选择什么?

  • 您正在使用OH_PIDOH_EmpID列来连接查询,因此您可以在它们定义层次关系时选择它们。
  • 您可以使用ROWNUM或使用实际序列来选择序列YOUR_SEQUENCE.NEXTVAL
  • 你需要知道部门主管——假设你从那些部门主管开始层次结构,那么有一个非常简单的操作符可以让你“通过根连接”层次结构——我相信一个简单的网络搜索会通知你的语法用法。

这几乎涵盖了所有内容,除非您要将其插入表格中。所以,使用:

INSERT INTO HierarchyDetails ( columns )
SELECT ...
于 2017-01-21T20:44:27.963 回答