在我的应用程序中,我有具有层次结构的实体“部门”。
当我在页面中列出部门时,我想让它们在层次树中缩进为他们的级别,所以我添加了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);
但是如果在给定的父母之下呢?