簡體   English   中英

Oracle Hierarchical Query - 獲取層次結構中的記錄,其中子項在列表中

[英]Oracle Hierarchical Query - Get records in hierarchy where children are in a list

我有一張帶有父子關系的表。 在另一個表上,我有一個成員列表,這些成員是第一個表中的葉子。

我想要做的是讓第一個表由第二個表中成員的父成員或第二個表的成員過濾。 我希望我的問題很清楚,如果沒有請詢問。

數據庫是Oracle 10g。

假設您在表TH具有此層次結構,在成員表TM有三行“GC Carl”、“PT Mike”、“PT Mary”(標記為綠色)。

在此處輸入圖片說明

要找到他們所有的父母、祖父母等(標記為黃色),您需要這個簡單的分層查詢:

select distinct id
  from th
  connect by id = prior pid
  start with id in (select id from tm)

SQLFiddle 演示

如果您只尋找父母並且您需要以分層方式進行,那么:

select distinct id
  from th
  connect by id = prior pid and level <= 2
  start with id in (select id from tm)

(馬丁被淘汰了,因為他不是任何成員的父母,而且他不在TM )。

如果這不是您想要的,您絕對應該精確查詢,添加示例輸入數據和所需的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM