mysql中有一张表,存放的是分类菜单,通过p_id字段来实现层级关系,有个排序字段,实现同级排序,本人现在想建个视图重新把排序字段拼接成一个完整的排序,包含父节点的排序。
表 menu如下
id name p_id order
1 A 0 0
2 B 0 1
3 AA 1 0
4 AB 1 1
5 AAA 3 0
视图 menu_v如下
id name p_id neworder
1 A 0 0
2 B 0 1
3 AA 1 0-0
4 AB 1 0-1
5 AAA 3 0-0-0
表 menu如下
id name p_id order
1 A 0 0
2 B 0 1
3 AA 1 0
4 AB 1 1
5 AAA 3 0
视图 menu_v如下
id name p_id neworder
1 A 0 0
2 B 0 1
3 AA 1 0-0
4 AB 1 0-1
5 AAA 3 0-0-0
解决方案
10
http://blog.csdn.net/acmain_chm/article/details/4142971
MySQL中进行树状全部子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了全部当前节点下的全部子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中假如是有限的层次,例如我们事先假如可以确定这个树的最大深度是4, 那么全部节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们…
MySQL中进行树状全部子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了全部当前节点下的全部子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中假如是有限的层次,例如我们事先假如可以确定这个树的最大深度是4, 那么全部节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们…
50
select m2.id,m2.name,m2.p_id, concat( if(m0.order is null,"",concat(m0.order,"-")), if(m1.order is null,"",concat(m1.order,"-")), m2.order ) as neworder from menu m2 left join menu m1 on m2.p_id=m1.id left join menu m0 on m1.p_id=m0.id