在我的应用程序中,我有实体“部门”,具有分层结构。
当我在页面中列出部门时,我希望将它们缩进为层次树中的级别,因此我添加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);
但如果在某个父母的指导下呢?