同一个表

时间:2015-09-14 17:40:05

标签: php sql oracle

我的问题是这个。我正在访问一个设计糟糕的旧设备库存系统,它在单个表中具有多层次的设备。

例如:

表:设备

|EQ_1 | EQ_2|
|123  |     |
|123  | 456 |
|123  | 567 |
|456  | 789 |
|567  |     |
|789  | 987 |

正如你所看到的那样,第一件设备有一个自己的入口123,另外还有两个设备连接到它456和567。从这里567只是它本身但是456连接到789并且还附加了至987.

我已经把桌子重新加入了几次,但是我一直在遇到比我补偿更深的连接的设备。我希望找到一种方法来获得"端点"无论他们有多深。

示例:

我输入123作为我希望看到所有设备的设备,我得到了

的回报
123
456
567
789
987

我正在通过PHP代码进行此查询,所以如果有建议使用我,我会对它开放,但由于有成千上万的连接,我想阻止从Oracle服务器来回传递信息到Web服务器并进行多个查询。纯SQL将是首选,PHP / SQL混合第二,除非你能证明它更有效。

1 个答案:

答案 0 :(得分:0)

根据Marc B对问题的评论,我发现了我需要的答案

SELECT DISTINCT EQ_1
                ,EQ_2
                ,LEVEL

FROM Equipment 
CONNECT BY PRIOR EQ_2 = EQ_1
相关问题