2008-11-19 52 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) 

這應該選擇給你你所需要的記錄...

相關問題