私のアプリケーションでは、階層構造を持つエンティティ「Department」があります。
そして、ページに部門をリストするときに、階層ツリーのレベルとしてインデントしたいのでdeep
、現在の部門の場所を識別する列を追加します。
これはテーブルです:
department_id parent_id deep
1 NULL 1
2 1 11
3 1 12
4 2 21
5 3 31
6 2 22
7 6 221
私は次のように表示します。
.indent1:{margin-left:5px;}
.indent2:{margin-left:10px;}
.indent3:{margin-left:15px;}
<#list depList as dep>
<span class="indent${dep.deep?length}">${dep.name}</span>
</#list>
次に、新しいレコードを挿入するたびに、その値を計算するdeep
必要があります。どの方法が最も効率的か知りたいですか?
例えば:
新しい部門が作成された場合、その paren_id は2
、この部門が挿入される場合の深さは「23」である必要があります。値を計算する方法を知りたいのですが23
、何か提案はありますか?
アップデート:
質問は現在、SQLに関連付けられているようです:
特定の親によって最大長のディープ フィールドを選択したい。
テーブル全体で最大長の深い値しか取得できません。
select deep from t_department where length(deep)=(select max(length(deep)) from t_department);
しかし、与えられた親の下にいる場合はどうでしょうか?