我将尝试解释表格的布局方式,以便我需要的内容可能更清楚一些。
###############################################################
# cid # iid # child cid # child iid # target cid # target iid #
###############################################################
# 112 # 1 # null # null # 116 # 1 #
# 112 # 2 # 112 # 1 # null # null #
# 112 # 3 # 112 # 1 # 116 # 2 #
# 112 # 4 # 112 # 1 # 100 # 3 #
# 112 # 101 # null # null # 116 # 101 #
# 112 # 102 # 112 # 101 # null # null #
# 112 # 103 # 112 # 101 # 116 # 102 #
# 112 # 201 # null # null # 116 # 201 #
# 112 # 202 # 112 # 201 # null # null #
# 112 # 203 # 112 # 201 # 116 # 202 #
# 112 # 301 # null # null # 116 # 301 #
# 112 # 302 # 112 # 301 # null # null #
# 112 # 302 # 112 # 301 # 116 # 302 #
上面是我试图从中获取数据的表格的缩减表示。对不起,如果布局有点废话。这里的每一行都是一个对象。这些对象中的每一个都可以有子对象,例如,第一行没有子对象但链接到目标对象。第二行有一个子对象,并且没有链接到目标对象,但是,它通过确实有目标对象的子 cid 和 iid 链接回第 1 行。第三行也链接到第一行,但它也有一个目标对象,所以我实际上不想回到第一行。
其他表
#########################################
# cid # iid # col1 # col2 # col3 # col4 #
#########################################
# 116 # 1 # a # null # 16 # 1 #
# 116 # 2 # b # 1 # 6 # null #
# 116 # 3 # n # 1 # 11 # 2 #
# 116 # 101 # n # 2 # 61 # 3 #
# 116 # 102 # b # null # 161 # 101 #
# 116 # 201 # a # 33 # 312 # 116 #
# 116 # 202 # a # 33 # 312 # 116 #
# 116 # 301 # s # 56 # 1321 # 33 #
# 116 # 302 # r # 6 # 22 # 12 #
结果表
###########################################################################################
# cid # iid # child cid # child iid # target cid # target iid # col1 # col2 # col3 # col4 #
###########################################################################################
# 112 # 1 # null # null # 116 # 1 # a # null # 16 # 1 #
# 112 # 2 # 112 # 1 # null # null # a # null # 16 # 1 #
# 112 # 3 # 112 # 1 # 116 # 2 # b # 1 # 6 # null #
# 112 # 4 # 112 # 1 # 100 # 3 # n # 1 # 11 # 2 #
# 112 # 101 # null # null # 116 # 101 # n # 2 # 61 # 3 #
# 112 # 102 # 112 # 101 # null # null # n # 2 # 61 # 3 #
# 112 # 103 # 112 # 101 # 116 # 102 # b # null # 161 # 101 #
# 112 # 201 # null # null # 116 # 201 # a # 33 # 312 # 116 #
# 112 # 202 # 112 # 201 # null # null # a # 33 # 312 # 116 #
# 112 # 203 # 112 # 201 # 116 # 202 # a # 33 # 312 # 116 #
# 112 # 301 # null # null # 116 # 301 # s # 56 # 1321 # 33 #
# 112 # 302 # 112 # 301 # null # null # s # 56 # 1321 # 33 #
# 112 # 302 # 112 # 301 # 116 # 302 # r # 6 # 22 # 12 #
[只是为了澄清,在第一个表中,目标 cid 和 iid 与我链接到的另一个表中的 cid 和 iid 相关。]
本质上,我需要的是递归地遍历表,直到一行具有目标对象引用。
如果一行同时具有子 c/i id 和目标 c/i id,我只想要目标 c/i id。
谁能指出我正确的方向?
我正在慢慢阅读 http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm但我发现它有点混乱。我不会完全是更简单的 SQL 查询方面的专家,所以递归现在有点过头了。
谢谢
编辑:添加了其他表格和结果的示例