2016-06-26 43 views
0

我有users_entities表,它包含用戶,他們的實體和他們的依賴實體。喜歡這個。遞歸Sybase Select

|user | entity | dependant entity| 
---------------------------------- 
| 122 | 746414 |  null  | 
| 122 | 746410 |  746414  | 
| 122 | 746405 |  746414  | 
| 333 | 746403 |  746405  | 

所以,用一個

select entity from users_entities where user = 122 

我得到:706414,706410和746405.

所有地方122負責的實體,但我也有來顯示所有的依賴這些實體的實體。所以,我也必須表現出746403因爲它依賴的746405.

這是一個樹形結構

74614 
    | 
746405 
    | 
746403 

我想我必須做一個遞歸選擇,但我不能把它做。它可以用一個選擇完成嗎?或者我將不得不做一個功能或存儲過程?謝謝。

編輯 哦,我忘了。他們可以是多層次的家屬。

+0

你可以有多個級別? – sgeddes

+0

@sgeddes是的,我可以有多個級別的家屬。對不起,我忘了那部分。 – user3063952

回答

0

你必須做一個自我加入。但是你需要知道最高級別的數量。如果最大值是5,那麼你可以編寫一個5路自連接。當使用外連接謂詞時,它應該能夠處理小於該數量級別的任何內容。 像這樣的東西(我沒有測試查詢,但你會明白我的意思,這是最大3級做到,但你可以擴展它):家屬的

select t1.user as user1, t2.user as user2, t3.user as user3 
from 
users_entities t1 
left outer join users_entities t2 
on t1.entity = t2.entity 
left outer join users_entities t3 
on t2.entity = t3.entity 
where t1.user = 122