我要做的是一个菜单的排序问题
id fun_name parent_id sort_id
1 root 0 1
107 |name 1 38
108 || her 107 2
110 |||is109 109 1
109 || his 107 1
98 |namesf 1 2
111 |||is109_2 109 3
我要做的是按照 parent_id 分组,然后在按照sort_id排序即
id fun_name parent_id sort_id
1 root 0 1
107 |name 1 38
108 || her 107 2
109 || his 107 1
110 |||is109 109 1
111 |||is109_2 109 3
98 |namesf 1 2
意思就是父类排序,然后当前父类面就跟随子类,排序,子类下面还有...第一个父类排序完了就是第二个父类
1 1 1
1-1 1-1 1-1
1-1-1 1-1-1 1-1-1
2 2 2
2-1 2-2 2-3
3 3 3
3-3 3-3 3-3 层级式排序,第一个父类下面是子类一直到此结束,然后再是第二个类别排序,一次类推,N级。
3 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
两种办法,一种办法是把所有数据都载入到程序中,然后用c#处理
另一种办法是修改表的设计,加上TreeCode字段,TreeCode字段值的规律如下
00001>
00001>00001>
00001>00002>
00001>00003>
00002>
00002>00001>
00002>00002>
00002>00003>
这个TreeCode字段是冗余字段,通过它可以很方便的取到你要求排序的层级数据
如果这张表的数据量很小的话,建议你把数据载入到程序中用C#写个递归函数处理。如果数据量很大,并且你也有条件修改表结构的话,可以添加冗余字段,解决此问题。
白衣染霜花
TA贡献1796条经验 获得超10个赞
select ROW_NUMBER() over(partition by parent_id order by stort_id) as rownum,Parent_ID,stort_id
from 表,你再改改
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
谢谢您的回复,我是sqlserver,你给的方案是 oracle ,不过后来还是用sql的 CTE 解决了,就是一楼说的加一个冗余字段....不过非常感谢您的参与,谢谢~!祝你天天开心........
- 3 回答
- 0 关注
- 508 浏览
添加回答
举报
0/150
提交
取消