Oracleの階層問合せ
Table: TREE_DATA NODE_ID PARENT_NODE_ID NODE_NAME ------- -------------- --------- 1 0 ルート 2 1 子1 3 2 子1の子 4 1 子2
ってテーブルがあるとして、全階層を一発のSQLで取得しつつ、階層を維持したままNODE_NAMEでソートするには
Select TD.* From TREE_DATA TD Start With TD.PARENT_NODE_ID = 0 Connect By Prior TD.NODE_ID = TD.PARENT_NODE_ID Order Siblings By TD.NODE_NAME
でイイらしい。
階層を一発で取得するところまでは知ってたけど、階層を維持したまま任意のキーでソートする方法は知らなかったので、目からウロコだった。