有个菜单表,需要根据用户权限获取菜单 和菜单的父菜单。用户权限表中保留了菜单的id ,没有保存父菜单id 。每个菜单项 有个字段记录了父菜单的id串,格式为:一级父id, 二级id, 三级父id.......我怎么一次性查出 用户的菜单 和 菜单的全部上级菜单?

解决方案 »

  1.   

    不好意思,描述的有些简单,补充下,用的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】 来
       
      

  2.   

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