私は、階層データは、このような表で表されている場合:階層データでは、ルートレベルまでのすべてのノードを選択する方法は?
team_id team_name parent_id
1 Sales (null)
2 Executives (null)
3 EMEA Sales 1
4 APAC Sales 1
5 UK Sales 3
1 TEAM_IDを考えると、どのようなルートレベルにつながるすべてのteam_idsを選択するためのSQLでしょうか?私はOracle 11.2を使用しています。 (5,3,1)
あるいは、TEAM_ID 4を与え、次いで、出力は次のようになります:例えば
は、TEAM_ID 5を与え、team_idsがあるべきで返さ(4,1)
それは合理的に自明です - 特定のノードから木の枝を横断
SELECT team_id, team_name, parent_id
FROM teams
START WITH team_name = 'Sales'
CONNECT BY PRIOR team_id = parent_id
;
私は反対を探しています:のようなものを使用して、データの階層構造を示す、木の枝を下にトラバースします。
ここでのサンプルデータはわずか3レベルですが、私は任意のレベル数のソリューションを探しています。
CONNECT BYで読んでください。予想されるサンプル出力を表示してください。 – OldProgrammer
@OldProgrammer確かに、私はCONNECT BYをよく知っています。ルートノードからツリーのブランチをトラバースするのはかなり簡単ですが、ツリーを1つだけトラバースして、ツリーをトラバースしたいと考えています。 – osullic
先に接続してください。 – OldProgrammer