2008-11-19 47 views
2

我有如下形式的一些数据如何在Oracle选择项目的一组相关的SQL

Key ID  Link  
1  MASTER 123 
2  AA  123 
3  AA  123 
4  BB  123 
5  MASTER 456 
6  CC  456 

我希望能够在同一个选择选择所有链接的项目符合选择条件,再加上联系主。例如,如果我有“AA”的ID,我想要返回与ID =“AA”的行中,加上ID的行=“主”和123的链接:

1  MASTER 123 
2  AA  123 
3  AA  123 

我使用Oracle 10.2g,所以如果有任何特殊的Oracle语法会使这更容易,那就没问题。

回答

4

这里有一个方法。

SELECT DISTINCT key, id, link 
    FROM the_table 
    START WITH id = 'AA' 
    CONNECT BY id = 'MASTER' and link = PRIOR link and 'AA' = PRIOR ID 
0

SELECT * FROM table_name的WHERE ID = YOUR_ID UNION ALL SELECT * FROM table_name的WHERE ID = 'master' 和链接=(SELECT链路从table_name的WHERE ID = YOUR_ID)

这应该回答我理解的问题; )

+0

外貌喜欢它会给我正确的答案,但我希望我的答案会更有效率。你必须对你的数据进行测试才能确定。 – 2008-11-19 13:21:19

+0

是的,您的解决方案使用Oracle语法的良好连接。解释计划看起来也不错。 – 2008-11-19 13:35:45

0

如果我理解正确的话,这是我认为一个例子做了你在找什么:

select * from my_table where link in 
(select link 
from my_table 
where id = 'AA') 
and id in ('AA','MASTER') 
0

我的理解是,你什么都具有相同的“链接”作为一个id为AA firts记录你所需要的链接字段:

select i.link from table i 
where i.id = YOUR_ID 

现在您“选择“这有一个链接记录

select * from table 
where link in (select i.link from table i where i.id = YOUR_ID) 

这应该选择给你你所需要的记录...

相关问题