select 排序问题

wenyongjie 2013-06-22 05:49:49
一张表 table
结构如下 :

编号 上级编号 排序 名称
1 0 1 aaa
2 0 2 bbb
3 1 1 aaa.1
4 1 2 aaa.2
5 2 1 bbb.1
6 2 2 bbb.2
7 1 3 aaa.3
...
经过排序后,变为

编号 上级编号 排序 名称
1 0 1 aaa
3 1 1 aaa.1
4 1 2 aaa.2
7 1 3 aaa.3
2 0 2 bbb
5 2 1 bbb.1
6 2 2 bbb.2
...

说明
表的树结点的上级编号为0 “排序”:如果是同级,就是1234排下来,比如说 查询上级编号为0的排序
select 名称 from tb where 上级编号 = 0 order by 排序


...全文
96 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
想飞的菜鸟 2013-06-27
如是二级的编号是多位数,可以使用FORMAT解决,总之,要根据实际写语句,通用未必是最好。
回复
想飞的菜鸟 2013-06-27
利用数值文本的排序就可以了,但最好说明你实际中存在多少个分级,要按你的实际来写语句(下面语句是针对你例子是二级分类的):
SELECT * FROM TT ORDER BY  iif(上级编号=0,排序&上级编号,上级编号&排序)
回复
wenyongjie 2013-06-25
看来只能这样子了,居然没能解决,还是要谢谢
回复
wwwwb 2013-06-25
递归调用VBA程序,生成编号 OR 建议生成如101.1 101.1.1之类的编号,再排序
回复
wenyongjie 2013-06-25
名称不是固定的
回复
wwwwb 2013-06-25
如果名称是固定的 order by left(名称,3),if(instr(名称,'.')=0,0,val(mid(名称,instr(名称,'.')+1)))
回复
wenyongjie 2013-06-25
我的意思是这张表,按上级编号来排序,然后把上级编号对应的下级记录显示出来,说得不太明白,最终实现的就是 其中上级编号对应的是编号 比如说aaa.1 这条记录的上级编号是1 哪么它就是属于编号为1的这条记录的下级 编号 上级编号 排序 名称 1 0 1 aaa 3 1 1 aaa.1 4 1 2 aaa.2 7 1 3 aaa.3 2 0 2 bbb 5 2 1 bbb.1 6 2 2 bbb.2 这样的结果
回复
想飞的菜鸟 2013-06-23
楼主的描述看不明,只好从效果中反推语句:
SELECT * FROM T ORDER BY 名称,(上级编号=0)
回复
相关推荐
发帖
Access
创建于2007-09-28

7520

社区成员

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
申请成为版主
帖子事件
创建了帖子
2013-06-22 05:49
社区公告
暂无公告