0

私のアプリケーションでは、階層構造を持つエンティティ「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);

しかし、与えられた親の下にいる場合はどうでしょうか?

4

0 に答える 0