2013-10-06 81 views
0

我有一个MySQL表看起来像这样 enter image description here多层次COMBOX - 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

为什么你想用一个下拉框来做到这一点?这是一个要求吗? – CodeRedick

+0

这不是一个成就,但它应该可能与MySQL我认为:9 – Jazerix

+0

不是真的,当你想要一个嵌套的数据集时,数据库返回平面数据集。你可以将所有的数据作为一个平面数据集并在之后处理......但是在一个单独的组合框中有三个层次也不是很好的设计。你最好用三个组合框来动态细化细节。 – CodeRedick

回答

0

如果你被限制在3个等级,可以使2个LEFT JOIN S和得到一个查询中的所有数据:

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