Oracle数据库,树型结构Sql查询问题

针对一张表,存菜单的信息,父包含子,子又包含他的子,关于菜单本身还有排序,

select level levell,--层级       rownum rownumber,       t.trchildtsk,       t.trparnttsk,

       t.trprsseq,

       b.tmtasktype,       b.tmobnm,       b.tmver,       b.tmtasktype  from Crpctl.F9001 t Left join Crpctl.F9000 b on t.trchildtsk = b.tmtaskid start with t.trparnttsk='66' --开始条件connect by prior trchildtsk = t.trparnttsk ;--递归条件

其中 F9001是存菜单父项和子项ID的,F9000是为了根据ID取翻译(可以忽略)。但是F9001有一个字段TRPRSSEQ,这个是当前层级下的一个排序。

比方说三年级二班的ID为A,这是第一级菜单,那么第二级菜单为女,顺序为01;第二级菜单还有一个为男,他的顺序为02.那么根据我上面的Sql,我的satart with时,父项为A时,我是可以取出来 菜单‘女’和菜单‘男’的,但是结果无法按照01和02排序。

’女‘下可能还有子菜单和排序,同理,’男‘下亦是如此

FineReport 著名的蓝雨衣 发布于 2024-5-28 16:57
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2024-5-28 17:05
SELECT LEVEL AS levell,
ROWNUM AS rownumber,
t.trchildtsk,
t.trparnttsk,
t.trprsseq,
b.tmtasktype,
b.tmobnm,
b.tmver,
b.tmtasktype
FROM Crpctl.F9001 t
LEFT JOIN Crpctl.F9000 b ON t.trchildtsk = b.tmtaskid
START WITH t.trparnttsk = '66' -- 开始条件  
CONNECT BY PRIOR trchildtsk = t.trparnttsk
ORDER SIBLINGS BY t.trprsseq; -- 同级菜单根据 TRPRSSEQ 排序

  • 著名的蓝雨衣 著名的蓝雨衣(提问者) 哇,感谢大佬出手相助,困扰了一两个小时哈哈哈哈哈哈。您的回答已采纳,再次感谢您的相助!祝您和您的家人身体健康,万事如意~~
    2024-05-28 17:14 
  • 2关注人数
  • 173浏览人数
  • 最后回答于:2024-5-28 17:05
    请选择关闭问题的原因
    确定 取消
    返回顶部