2017-03-07 7 views
0

In meinem Projekt Looping konfigurierte i-Menü wie untenwie Abfragen zu vermeiden, in

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 

Ich mag unter json aus der obigen Tabelle oben json

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

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

Um genrate zuerst am Abrufen i erzeugen Mutter Menü dann bin ich Schleifen jedes Elternmenü mit dieser Eltern-ID bin Submenü bekommen.

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

Ist ihre Möglichkeit, zweite Abfrage zu vermeiden ?? Jede Hilfe wird sehr geschätzt werden !!!

Antwort

0

Sie wahrscheinlich mit einem connect by ab gehen könnte:

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'. 

Dies würde gewähren Sie Ihre Daten als Hierarchie und würde lösen einen Bedarf für eine verschachtelte Schleife.

+0

Es gibt nur übergeordnete Menüs und nicht untergeordnete Menüs zurück – Madhesh