SQL查询为子项选择父层次结构

时间:2016-09-07 07:38:37

标签: sql oracle hierarchical-data

我有一个表(dim_factory_relation),它以下面的格式存储子工厂ID和每个子工厂的父工厂ID。

FK_CHILD_FACTORY_ID   FK_PARENT_FACTORY_ID
65                      5
66                      5
5                      13
10                     13
13                     25
13                     40
30                     40
40                    100
71                     56
72                     56
56                    100 

现在,如果我通过较低的子工厂,它应该提供父母列表直到最高级别。例如。我作为一家儿童工厂经过了65岁。它必须给我

FK_PARENT_FACTORY_ID
5
13
25
40
100

请使用Oracle SQL帮助您了解如何使用Oracle SQL。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

使用connect by prior

select FK_PARENT_FACTORY_ID
  from t
start with FK_CHILD_FACTORY_ID = 65
connect by prior FK_PARENT_FACTORY_ID=FK_CHILD_FACTORY_ID

<强>输出

                   FK_PARENT_FACTORY_ID
---------------------------------------
                                      5
                                     13
                                     25
                                     40
                                    100