Требуется помощь по запросу MySQL - Группировка по родителю - PullRequest
0 голосов
/ 21 января 2011

Я пытаюсь выполнить запрос mysql, который создаст массив родительских элементов с дочерними элементами внизу. Но я не уверен на 100% как. Вот что я сделал до сих пор:

SELECT * FROM категорий как rf ORDER BY родитель, имя 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
        )

)

Как вы можете видеть, у дочерних элементов есть идентификатор родительских элементов (parent установлен в 0), но я не уверен, как объединить все это вместе, чтобы сделать массив примерно так:

родитель

- ребенок

- ребенок

родитель

родитель

- ребенок

- ребенок

- ребенок

Любая помощь будет оценена :) 1032 *

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Также

ВЫБЕРИТЕ родителя, GROUP_CONCAT (имя) в качестве имен ОТ категорий как rf GROUP BY 1;

Вы получите одну строку для каждого родителя с родительским идентификатором в первом столбце и дочерними именами, разделенными запятой во втором столбце.

1 голос
/ 21 января 2011

Если возможно построить вложенные массивы, используя данные из этого массива: Каждый объект будет иметь переменную Array. Затем, после создания исходного массива, переместите дочерние элементы под их родителями вручную, проанализировав исходный массив.

Метод, который анализирует, будет рекурсивным и будет принимать исходный массив и дочерний массив, который он в данный момент создает.

...