树形结构数据怎么查询返回?

时间:2021-07-02 00:28:46
有个菜单表,需要根据用户权限获取菜单 和菜单的父菜单。用户权限表中保留了菜单的id ,没有保存父菜单id 。每个菜单项 有个字段记录了父菜单的id串,格式为:一级父id, 二级id, 三级父id.......

我怎么一次性查出 用户的菜单 和 菜单的全部上级菜单?


4 个解决方案

#1


最好有表结构和数据可以分析。

#2


表结构,测试数据,预期结果,都说一下。别人猜不出来。

#3


不好意思,描述的有些简单,补充下,用的mysql : 
比如数据结构如下:
CREATE TABLE `t_menu` (
  `id` int(11) NOT NULL COMMENT '菜单id',
  `name` varchar(30) NOT NULL,
  `parent_id` varchar(50) NOT NULL COMMENT '父菜单iD序列(一级菜单ID.二级菜单ID.三级菜单ID...)'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of t_menu
-- ----------------------------
INSERT INTO `t_menu` VALUES ('1', '一级菜单1', '');
INSERT INTO `t_menu` VALUES ('2', 二级菜单1', '1');
INSERT INTO `t_menu` VALUES ('3', '三级菜单1', '1.2');
INSERT INTO `t_menu` VALUES ('4', '三级菜单2', '1.2');
INSERT INTO `t_menu` VALUES ('5', '四级1', '1.2.4');

-------------------------------- 对应菜单如下图:
一级菜单1
     |----------二级菜单1
                   |----------三级菜单1
                   |----------三级菜单2
                                 |--------------四级菜单1

---------------------------------------------------
在保存用户菜单时只保留了【三级菜单1】、【三级菜单2】、【四级菜单1】的ID。
查询时想要还原上图的树形 菜单,也就是要查出 【二级菜单1】和【一级菜单1】 来


   


#4


楼主可查询 select ...  connect by 语句

#1


最好有表结构和数据可以分析。

#2


表结构,测试数据,预期结果,都说一下。别人猜不出来。

#3


不好意思,描述的有些简单,补充下,用的mysql : 
比如数据结构如下:
CREATE TABLE `t_menu` (
  `id` int(11) NOT NULL COMMENT '菜单id',
  `name` varchar(30) NOT NULL,
  `parent_id` varchar(50) NOT NULL COMMENT '父菜单iD序列(一级菜单ID.二级菜单ID.三级菜单ID...)'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of t_menu
-- ----------------------------
INSERT INTO `t_menu` VALUES ('1', '一级菜单1', '');
INSERT INTO `t_menu` VALUES ('2', 二级菜单1', '1');
INSERT INTO `t_menu` VALUES ('3', '三级菜单1', '1.2');
INSERT INTO `t_menu` VALUES ('4', '三级菜单2', '1.2');
INSERT INTO `t_menu` VALUES ('5', '四级1', '1.2.4');

-------------------------------- 对应菜单如下图:
一级菜单1
     |----------二级菜单1
                   |----------三级菜单1
                   |----------三级菜单2
                                 |--------------四级菜单1

---------------------------------------------------
在保存用户菜单时只保留了【三级菜单1】、【三级菜单2】、【四级菜单1】的ID。
查询时想要还原上图的树形 菜单,也就是要查出 【二级菜单1】和【一级菜单1】 来


   


#4


楼主可查询 select ...  connect by 语句