2016-06-26 10 views
0

私はusers_entitiesテーブルを持っています。これには、ユーザー、エンティティ、および依存するエンティティが含まれています。このような。 706410、706414、および746405.再帰的なSybaseの選択

122が担当している事業体のすべてが、私はまた、すべて示さなければならない:

select entity from users_entities where user = 122 

とそう

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

、私が取得しますそれらのエンティティに依存するエンティティ。それは746405.

に依存するのでだから、私はまた、746403を表示する必要がありますそれは私が、私は再帰的な選択をしなければならないとしたツリー構造

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 
関連する問題