В моем приложении есть объект "Отдел" с иерархической структурой.
И когда я перечисляю отдел на странице, я хочу сделать его отступом в качестве уровня в иерархическом дереве, поэтому я добавляю столбец 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
, любое предложение?
Обновление:
Похоже, что qasting теперь реализован в sql:
Я хочу выбрать поле максимальной длины для данного родителя.
Я могу получить значение максимальной длины только во всей таблице:
select deep from t_department where length(deep)=(select max(length(deep)) from t_department);
Но как насчет того, если под данным родителем?