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