php - 选择查询结构的根

标签 php mysql

我有一个结构如下的 SQL 表

MENU1
    M1_SM_1
        M1_SM1_SSM_1
        M1_SM1_SSM_2

    M1_SM_2
        M1_SM2_SSM_1
        M1_SM2_SSM_2

    M1_SM_3
        M1_SM3_SSM_1
        M1_SM3_SSM_2

MENU2
    M2_SM_1
        M2_SM1_SSM_1
        M2_SM1_SSM_2

    M2_SM_2
        M2_SM2_SSM_1
        M2_SM2_SSM_2

........................
........................

所有这些都存储在如下的sql表中

+ID-------NAME------PARENT_ID
 1        MENU1         0
 2        MENU2         0
 3        MENU3         0
 4        M1_SM1        1
 5        M1_SM2        1
 6        M1_SM1_SSM1   4        
 7        M1_SM1_SSM2   4        

 ............................. 
 .............................

现在我给定的单个值可能是 MENU1 或 M1_SM1 或 M1_SM1_SSM1(名称) (名称是唯一的)

我想选择其父元素为 0 的根元素 那个的 sql 查询应该是什么?

例如,如果我给了 M1_SM1_SSM1 或 M1_SM1 或 MENU1 那么选定的行将是

+ID-------NAME------PARENT_ID
 1        MENU1         0

是否有使用一些 while 循环和条件的简单 PHP 解决方案?

我是 SQL 的新手,不知道 JOIN 查询,这可能是一个非常简单的问题,但没有得到任何解决方案。 任何解决方案表示赞赏。

最佳答案

尝试像这样巧合地调用一个变量:

$call = array(
"MENU1"=>array(
    "MENU1",
    "M1_SM1",
    "M1_SM1_SSM1"
),
"MENU2"=>array(
    "MENU2",
    "M1_SM2",
    "M1_SM1_SSM2"
),
"M1_SM1"=>array(
    "M1_SM1"
),
"M1_SM1_SSM1"=>array(
    "M1_SM1_SSM1"
),
"M1_SM2"=>array(
    "M1_SM2"
),
"M1_SM1_SSM2"=>array(
    "M1_SM1_SSM2"
)    
);

然后做你的查询

foreach($call as $k=>$v){
// my select here WHERE NAME = $call[$k]

}

希望这就是你要找的东西

关于php - 选择查询结构的根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23853911/

相关文章:

php - Magento - 如何查询管理员的角色名称?

python - 使用 pymongo 对同一索引执行多个正则表达式匹配

php - Stripe,用户无法下载他们的发票

javascript - JQUERY 旋转 img

PHP 两个日期之间的月份差异?

c# - UWP 推送通知

javascript - 从随机网站上登录的用户获取数据

mysql - mariaDB 中的聚合函数

mysql - 如何使用SQL获取出现次数最多的组合?

mysql - 如何开启mysql bin日志