多级Combox - MySQL查询

时间:2013-10-06 21:18:54

标签: mysql sql multi-level

我有一个看起来像这样的MySQL表 enter image description here

我想创建一个看起来像这样的组合框:

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中尝试了一些循环,但我无法理解它。

1 个答案:

答案 0 :(得分:0)

如果您限制在3个级别,则可以生成2个LEFT JOIN并在一个查询中获取所有数据:

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))