我正在使用菜单模块,并在检索有关订单的菜单时遇到问题。
Kindly check the fiddle for reference.
在数据库中: PARENTID 表示它是否是父级。 如果PARENTID=0,则为父菜单,否则为子菜单。
PARENTLEVEL - 级别的顺序为 1,2,3,4,5,6..
当我运行查询时,我能够按顺序获取菜单:
SELECT * FROM
category
WHEREpublish
='1' and parentid='0' order bymenuorder
ASC
但是当我想订购子菜单时,我无法订购它们:
SELECT * FROM category c inner join category b on c.parentid = b.parentid where c.publish='1' and c.parentid!='0'
我尝试过:
SELECT * FROM category p LEFT JOIN category c ON c.parentid=p.parentid WHERE p.publish=1 order by p.PARENTID,c.MENUORDER ;
我正在尝试的是:
我想要的结果是这样的顺序:
1.Home
2.Settings
Set Period
User Type
Roles
Region
.....etc
这样,我就可以确定菜单顺序了。有人可以帮我点主菜单下的菜单/子菜单吗?
提前致谢!!
最佳答案
好的,这里是 edited version :
SELECT p.menuname pmen,c.menuname cmen,
COALESCE(c.menutype,p.menutype) menutype,
COALESCE(c.link,p.link) link,
COALESCE(c.accessgroup,p.accessgroup) accessgroup
FROM category p
LEFT JOIN category c ON c.parentid=p.id AND c.publish=1
WHERE p.publish=1 and p.parentid='0'
ORDER BY p.menuorder,c.menuorder
结果:
| PMEN | CMEN | MENUTYPE | LINK | ACCESSGROUP |
---------------------------------------------------------------------------------
| Home | (null) | leftmenu | home.php | 1 |
| Settings | Set Period | leftmenu | home.php | 1 |
| Settings | User Type | leftmenu | home.php | 1 |
| Settings | Roles | leftmenu | home.php | 1 |
| Settings | Region | leftmenu | home.php | 1 |
| Settings | District | leftmenu | home.php | 1 |
| Settings | State | leftmenu | home.php | 1 |
| Settings | City | leftmenu | home.php | 1 |
| Master Screens | Product Type | leftmenu | home.php | 1 |
| Master Screens | Beneficiary Master | leftmenu | home.php | 1 |
| Master Screens | Component Master | leftmenu | home.php | 1 |
| Master Screens | Sub-Component | leftmenu | home.php | 1 |
| Master Screens | LOT Master | leftmenu | home.php | 1 |
| Master Screens | Tender Master | leftmenu | home.php | 1 |
| Master Screens | PDI Task Master | leftmenu | home.php | 1 |
| User Management | User | leftmenu | home.php | 1 |
| User Management | RBAC | leftmenu | home.php | 1 |
| TPI Task Master | (null) | leftmenu | home.php | 1 |
| Transaction | Work Order | leftmenu | home.php | 1 |
| Transaction | Vendor | leftmenu | home.php | 1 |
| Transaction | PDI Inspection | leftmenu | home.php | 1 |
| Transaction | TPI Inspection | leftmenu | home.php | 1 |
| Transaction | DE Inspection | leftmenu | home.php | 1 |
| Transaction | RM Inspection | leftmenu | home.php | 1 |
| Transaction | Install & Commissioning | leftmenu | home.php | 1 |
| Transaction | Re-Installation | leftmenu | home.php | 1 |
| Transaction | Bank Guarantee | leftmenu | home.php | 1 |
| Transaction | Initiate Invoice | leftmenu | home.php | 1 |
| Accounts | Invoice Approval | leftmenu | home.php | 1 |
| Reports | (null) | leftmenu | home.php | 1 |
关于MySql 内连接顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18144217/