2011-01-20 3 views
0

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

SELECT * FROM категорий, как радиочастотным 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 
     ) 

) 

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

родителя

- ребенок

- ребенок

родитель

родитель

- ребенок

- ребенок

- ребенок

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

ответ

1

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

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

2

Также

SELECT, родитель, GROUP_CONCAT (имя), как имена из категорий, как ВЧ GROUP BY 1;

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

Смежные вопросы