我的问题是这个。我正在访问一个设计糟糕的旧设备库存系统,它在单个表中具有多层次的设备。
例如:
表:设备
|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混合第二,除非你能证明它更有效。
答案 0 :(得分:0)
根据Marc B对问题的评论,我发现了我需要的答案
SELECT DISTINCT EQ_1
,EQ_2
,LEVEL
FROM Equipment
CONNECT BY PRIOR EQ_2 = EQ_1