父子关系在Oracle SQL中联接表

时间:2018-11-26 13:24:35

标签: sql oracle join oracle11g

我在下面有一个要求。

Table Structure containing Position details

现在我必须得到如下输出

enter image description here

如何实现? 我已经写了下面的SQL,但是parent_position_id即将到来,而不是parent_position_code

select
hapf.position_code,
pphf.parent_position_id
from
hr_all_positions_f hapf, PER_POSITION_HIERARCHY_F pphf
where
hapf.position_id = pphf.position_id

我应该编写子查询吗?我应该如何进行? 这是Oracle SQL

谢谢, 湿婆

1 个答案:

答案 0 :(得分:2)

没有人说过一次只能加入一个表:

select
  chi.position_code,
  par.position_code as parent_position_code
from
  hr_all_positions_f hapf
  INNER JOIN PER_POSITION_HIERARCHY_F chi on hapf.position_id = chi.position_id
  INNER JOIN PER_POSITION_HIERARCHY_F par on hapf.parent_position_id = par.position_id

记住它;我看到人们一直在思考,他们只能加入一张桌子。如果一个表在3个不同的列中解码了一个值,那么您肯定可以在3次内连接同一张表...想象一下,如果它是一个地址表,并且一个Student有一个HomeAddressId,WorkAddressId和StudyAddressId,并且该地址表保存了所有这些地址-您需要将地址表与Student表连接3次以获取所有数据。