通过menu_id 查询所有的父目录的menu_id
表明为tb_sys_menu 大神给写下代码吧select       menu_id, menu_name, url, icon, valid, parent_menu_id, sort_order     from tb_sys_menu   where menu_id in (    select menu_id from tb_sys_menu    where parent_menu_id>='0'       start with menu_id in (        select a.object_id        from tb_sys_role_purview a        where a.role_id in (            select b.role_id             from tb_sys_user_role b            where b.user_id = ?         )         and a.purview_type='1'    )    connect by prior parent_menu_id=menu_id    )    and valid = 1          and parent_menu_id = ?         order by sort_order

解决方案 »

  1.   

    上面的sql是oracle的,要转为MySQL,实在不会啊
      

  2.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  3.   

    create function getChildList(rootId varchar(36))
      returns varchar(1000)
      begin 
        DECLARE sTemp VARCHAR(1000); 
        DECLARE sTempChd VARCHAR(1000); 
         
        SET sTemp = '$'; 
        SET sTempChd = rootId; 
        
        WHILE sTempChd is not null DO 
        SET sTemp = concat(sTemp,',',sTempChd); 
        SELECT group_concat(menu_id) INTO sTempChd FROM tb_sys_menu   where FIND_IN_SET(parent_menu_id,sTempChd)>0; 
        END WHILE; 
        RETURN sTemp; 
     END