0

在我的应用程序中,我有具有层次结构的实体“部门”。

当我在页面中列出部门时,我想让它们在层次树中缩进为他们的级别,所以我添加了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,有什么建议吗?

更新:

似乎现在的 qustion 与 sql 相关联:

我想选择给定父级的最大长度深场。

我只能得到整个表中的最大长度深度值:

select deep from t_department where length(deep)=(select max(length(deep)) from t_department);

但是如果在给定的父母之下呢?

4

0 回答 0