需要mysql查询帮助 - 按父级分组

时间:2011-01-20 23:45:48

标签: php mysql group-by parent-child

我正在尝试执行一个mysql查询,该查询将创建一个父项目数组,其子项目位于下方。但我不是百分百肯定的。以下是我到目前为止所做的事情:

SELECT * FROM categories as rf ORDER BY parent,name ASC

这是输出的内容(数组):

Array
(
    [0] => stdClass Object
        (
            [id] => 7
            [name] => Safety Clothing
            [parent] => 0
        )

    [1] => stdClass Object
        (
            [id] => 8
            [name] => Safety Footwear
            [parent] => 0
        )

    [2] => stdClass Object
        (
            [id] => 9
            [name] => Workwear
            [parent] => 0
        )

    [3] => stdClass Object
        (
            [id] => 4
            [name] => Polos
            [parent] => 7
        )

    [4] => stdClass Object
        (
            [id] => 3
            [name] => Shirts
            [parent] => 7
        )

    [5] => stdClass Object
        (
            [id] => 6
            [name] => Jackets
            [parent] => 9
        )

    [6] => stdClass Object
        (
            [id] => 1
            [name] => Pants
            [parent] => 9
        )

    [7] => stdClass Object
        (
            [id] => 2
            [name] => Shirts
            [parent] => 9
        )

    [8] => stdClass Object
        (
            [id] => 5
            [name] => Shorts
            [parent] => 9
        )

)

正如您所看到的那样,子项具有父项的id(parent设置为0),但我不确定如何将它们合并在一起以执行如下所示的数组:

- 孩子

- 孩子

- 孩子

- 孩子

- 孩子

任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:2)

另外

SELECT parent,GROUP_CONCAT(name)作为名称FROM FROM类别为rf GROUP BY 1;

第一列中父ID的每个父级都会得到一行,第二列中的子名用逗号分隔。

答案 1 :(得分:1)

如果可以使用该数组中的数据构建嵌套数组: 每个对象都有一个Array变量。然后在构建初始数组之后,通过解析初始数组手动将子项移动到其父项下。

解析的方法是递归的,并且将采用它当前正在构建的初始数组和子数组。