在mysql中存储分层数据

时间:2012-04-02 13:59:35

标签: mysql sql spring hierarchical

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

当我在页面中列出部门时,我希望将它们缩进为层次树中的级别,因此我添加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);

但如果在某个父母的指导下呢?

0 个答案:

没有答案