在我的项目中,我配置了如下面的菜单
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
我想从上表
生成json以下 {
"menuname" : "home",
"action" : " a.htm,
"hasChild" : " true ,
"childlist" : [
{
"menuname" : "Customer",
"action" : "c.htm",
"hasChild" : "false",
},
{
"menuname" : "Corporate",
"action" : "e.htm",
"hasChild" : "false",
}
]
}
要在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 :(得分: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'.
这会将您的数据作为层次结构授予您,并且可以解决对嵌套循环的需求。