设计了一个表,表<t_main_menu>结构如下:
ID MTEXT MPID MFLAG 
主键 菜单名称 父类菜单ID(00表示顶级菜单) 是功能还是模块(Y/N)加入记录>:
====================
1 菜单1 00 Y
2 菜单2 1 Y
3 菜单3 2 Y
4 菜单4 3 N
===================我现在所要的功能是用一个SQL语句实现,只用传入“菜单4”的ID
,就可以显示如下所示的结果,请问该如何去实现在树形菜单中显示如下:
-------------------------------------------
菜单1 
- 菜单2 
------菜单3 
----------菜单4

解决方案 »

  1.   

    SQL> create table t_main_menu
      2  (
      3    ID    Integer,
      4    MTEXT varchar2(20),
      5    MPID  int,
      6    MFLAG varchar2(1)
      7  )
      8  ;Table createdSQL> insert into t_main_menu values (1,'菜单1',0,'Y');1 row insertedSQL> insert into t_main_menu values (2,'菜单2',1,'Y');1 row insertedSQL> insert into t_main_menu values (3,'菜单3',2,'Y');1 row insertedSQL> insert into t_main_menu values (4,'菜单4',3,'N');1 row insertedSQL> commit;Commit completeSQL> 
    SQL> Select LPAD(MTEXT, 13-2*level,'-') MTEXT From t_main_menu
      2  Start with ID = 4
      3  Connect by prior MPID = ID
      4  Order by ID;MTEXT
    --------------------------------------------------------------------------------
    菜单1
    --菜单2
    ----菜单3
    ------菜单4