0

我有一个看起来像这样的 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 中尝试了一些循环,但我无法理解它。

4

1 回答 1

0

如果限制在 3 级,可以做 2LEFT 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))
于 2013-10-06T22:26:53.503 回答