选择查询结构的根

时间:2014-05-25 09:32:31

标签: 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

是否有任何简单的PHP解决方案使用一些while循环和条件来实现目标?

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

1 个答案:

答案 0 :(得分:0)

尝试调用变量,如下所示:

$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]

}

希望你看到的是什么