Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多级Combox-MySQL查询_Mysql_Sql_Multi Level - Fatal编程技术网

多级Combox-MySQL查询

多级Combox-MySQL查询,mysql,sql,multi-level,Mysql,Sql,Multi Level,我有一个MySQL表,看起来像这样 我想创建一个如下所示的组合框: Hardware (ID 1, Parent 0) -Child (ID 2, Parent 1) -Child (ID 3, Parent 1) --Child (ID 4, Parent 3) 如您所见,主要类别的父Id为0,其余类别的Id与类别的Id关联 我想知道的是,是否有一种方法可以直接通过mysql查询做到这一点?如果,那么,你能给我举个例子吗 我在MySQL中尝试了一些循环,但在我的脑海中没有任何意义。如果您被

我有一个MySQL表,看起来像这样

我想创建一个如下所示的组合框:

Hardware (ID 1, Parent 0)
-Child (ID 2, Parent 1)
-Child (ID 3, Parent 1)
--Child (ID 4, Parent 3)
如您所见,主要类别的父Id为0,其余类别的Id与类别的Id关联

我想知道的是,是否有一种方法可以直接通过mysql查询做到这一点?如果,那么,你能给我举个例子吗


我在MySQL中尝试了一些循环,但在我的脑海中没有任何意义。

如果您被限制为3个级别,您可以使2个
左连接
并在一个查询中获取所有数据:

SELECT
    t1.id,
    TRIM(
        CONCAT(
            REPEAT('-',IF(t2.id IS NOT NULL,1,0) + IF(t3.id IS NOT NULL,1,0)), 
            ' ', 
            t1.label
        )
    ) AS label
FROM 
    mytable t1
LEFT JOIN
    mytable t2 ON (t1.parent = t2.id)
LEFT JOIN
    mytable t3 ON (t2.parent = t3.id)
ORDER BY
    IFNULL(t3.id, IFNULL(t2.id, t1.id))

你为什么要用一个组合框来做这个?这是一项要求吗?这不是一项成就,但我认为mysql应该可以做到:9不太可能,当您需要嵌套数据集时,数据库会返回平面数据集。您可以将所有数据提取为平面数据集,然后再进行处理。。。但是在一个组合框中设置三个级别也不是很好的设计。您最好使用三个组合框,动态深入了解细节。。。