Oracle-SQL单选,按字段级联

时间:2016-06-02 18:26:23

标签: sql oracle connect-by

我不完全确定如何说出我的意思。让我试试:有没有办法选择参考字段级联的所有元素?

例如,我有行:

parentRef   | Reference | Data
------------------------------
aContainer  | mainObj   | "Parent"
mainObj     | secondObj | "Child 1"
secondObj   | thirdObj  | "Child 2"
nonExistent | blankObj  | "Don't select me!"

当我只知道一个parentRef:“aContainer”时,我想在单个语句中选择mainObj,secondObj,thirdObj。这可能吗?

我可以通过让我的代码执行许多查询来实现这一点:select...where parentRef = 'aContainer',然后是select...where parentRef = 'mainObj'等,但我真的不想用我的数据库进行多次查询,主要是为了速度。< / p>

编辑:树查询!那是我需要的搜索词。

2 个答案:

答案 0 :(得分:2)

Oracle可以执行树查询,查看START WITH和CONNECT BY

答案 1 :(得分:0)

如果我理解你的话,你需要类似相关查询的东西。这将允许您仅获取表中具有父引用的项目。一个例子看起来像下面这样(虽然我可能已经颠倒了逻辑):

select 
parentRef
, Reference
, Data 
from mytable parentTable 
where Reference in (
select
 reference 
 from mytable childTable 
 where childTable.reference = parenttable.parentref)