2017-03-07 185 views
0

在我的項目查詢我配置的菜單如下圖所示如何避免循環

Menu Group Id Menu ID Parent Menu Id Menulevel  Name    Action GroupName 
     1   1    1   1  Home    a.htm  mainuser 
     2   2    1   1  Report    b.htm  mainuser 
     3   3    1   2  Customer    c.htm  mainuser 
     4   4    2   2  Merchant    d.htm  mainuser 
     5   5    1   2  Corporate    e.htm  mainuser 

我想從上表

{ 
    "menuname" : "home", 
    "action" : " a.htm, 
    "hasChild" : " true , 
    "childlist" : [ 
    { 
    "menuname" : "Customer", 
    "action" : "c.htm", 
    "hasChild" : "false", 
    }, 

    { 
    "menuname" : "Corporate", 
    "action" : "e.htm", 
    "hasChild" : "false", 
    } 
    ] 
    } 

產生以下JSON來genrate上述JSON第一我正在取父菜單的然後我循環使用該父母的ID每個父菜單獲取子菜單。

select * from menugroup where GroupName='mainuser' and Menulevel=1 
     for each parent menu 
     select * from menugroup where GroupName='mainuser' and Precedence=1 

是他們的任何方式,以避免第二個查詢? 任何幫助將不勝感激!

回答

0

你很可能有connect by截至去:

select * from menugroup 
start with menu_group_id = parent_group_id 
connect by prior menu_group_id = parent_group_id and prior menu_group_id != menu_group_id 
where groupname = 'mainuser'. 

這會滿足你的數據作爲一個層次,並會解決需要一個嵌套循環。

+0

它只返回父菜單而不是子菜單 – Madhesh