2

私はダービーにテーブルを持っています:

CREATE TABLE IMPORT_RULES (
   RULEID    INTEGER NOT NULL,
   PARENTID  INTEGER,
   NAME      VARCHAR(25) NOT NULL,
   PRIMARY KEY (RULEID)
)

PARENTID は親の RULEID ですが、親子関係の深さは不明です。

私の目標はDefaultMutableTreeNode、階層データを表す を作成することです。

これを行う最善の方法は、データベース内のすべてのアイテムの「レベル」を返し、最低レベルから最高レベルまで逆方向に循環する SQL クエリを使用することであると考えました。

私の問題は、Derby の上記のクエリを思い付くことができないことです。

このクエリを生成する方法、または目標を達成する方法についてのアイデアはありますか?

4

2 に答える 2

1

H2 データベースが受け入れ可能な代替手段である場合、それはRecursive Queriesをサポートします。カスタムツリーモデルに関するこの回答も参照してください。

于 2013-01-30T08:52:40.647 に答える
0

あなたの目標を達成できる単一のクエリはないと思います。もしあれば、それは私の頭の上にあるに違いありません。パフォーマンスの観点から最も効率的な方法は、「深さ」を別のテーブルに保存することです。簡単に言えば、ツリー ノード データを IMPORT_RULES テーブルに保存し、各ノードの深さを別のテーブル (IMPORT_RULE_LEVEL など) に保存します。このテーブルには、ノード ID と関連する深さからグローバル ルート ノードが保持されます。

しかし、明らかに、ブランチの途中に新しいノードを挿入すると、バッチ更新が必要になる場合があります。ロジックで子ノードを追加するだけでよい場合は、別のテーブルを使用することをお勧めします。

于 2013-01-30T03:08:50.637 に答える