2012-08-01 78 views
3

我有一個關於Oracle層次查詢問題。甲骨文雙向分層查詢

可以說我有關係表彼此相關單位,其中1單元是父母UNIT2是孩子。

ID UNIT1 UNIT2等欄目

------大量數據--------

讓我們假設我在看一個單位,現在我想全圖/樹與其他單位的關係。

這是很容易一下就被相互連接,也是那些孩子父母的:

INSERT INTO search_table 
SELECT id 
    FROM mytable 
    START WITH unit_id1 = 12 (or any random unit id) 
CONNECT BY nocycle PRIOR unit_id2 = unit_id1 
    GROUP BY id; 

這是動起來和類似的是下移。現在發生的事情是,例如,當向上移動1步時,它不搜索那個單位的子單位,而只是繼續搜索父母。所以基本上,如果父母單位有另一個孩子(不是我們正在尋找的孩子),我無法達到它,因爲語法只保留父母。後來它只看到了孩子,但不是這兩個組合。

有沒有一種方式,爲每個孩子或父母單位,我可以尋找父母和孩子?

+0

樣本數據+期望的輸出,請? – Tebbe 2012-08-01 14:23:47

+0

讓我們更容易... imaggine人類。可以說我有兩個孩子。我有兩個父母(媽媽和爸爸),他們有兩個孩子(我和我的兒子,現在我看着自己,想分層次地得到我所有的親戚,所以說...使用連接一次,我得到我的父母,並使用連接通過unit_id1和unit_id2交換我把我的2個孩子,但我不明白我的兄弟/姐妹。當我使用CONNECT BY讓我的父母,只會讓我的父母,他們的父母等。我想查詢還檢查我的父母的孩子。 – 2012-08-01 14:27:48

+0

編輯:(我和弟弟) – 2012-08-01 14:35:23

回答

0

我不知道,你可以使用單個查詢做到這一點。
但是你可以很容易地做到這一點在兩個步驟:

  1. 找到你的單位(誰沒有父母之一)
  2. 找到的
所有孩子的老祖先一