MySql 内连接顺序

标签 mysql sql

我正在使用菜单模块,并在检索有关订单的菜单时遇到问题。

Kindly check the fiddle for reference.

在数据库中: PARENTID 表示它是否是父级。 如果PARENTID=0,则为父菜单,否则为子菜单。

PARENTLEVEL - 级别的顺序为 1,2,3,4,5,6..

当我运行查询时,我能够按顺序获取菜单:

SELECT * FROM category WHERE publish='1' and parentid='0' order by menuorder 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/

相关文章:

php - 在 PHP 中包含类中心文件的方法

MYSQL,Union 中的子查询引用

mysql - 当多行具有相同日期时,与上一行相比的百分比变化?

MySQL 选择何时大小写

mysql - 可以使用 SELECT 查询,但不能使用它来创建新表

sql - 检查 postgres 中是否出现值 - NodeJS

mysql - SQL 或 NoSQL 搜索?

MySQL 查询获取特定行的值为空的列的名称

sql - 最好在 JOIN 之前或之后提取字段?

mysql - 如何比较sql中同一个表的行