Сортировка списка смежности детей по алфавиту

Если у меня есть список смежности, отсортированный по id / parent_id, есть ли простой способ отсортировать все дочерние элементы родителя по алфавиту по третьему текстовому полю (скажем, "имя")?

Я использовал информацию, предоставленную здесь: http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/ чтобы MySQL возвратил отсортированный список смежности. В идеале это позволило бы мне отсортировать дочерние элементы по третьему столбцу, но набор тестовых данных вообще не содержит дополнительных столбцов в этом примере.

Мои данные выглядят так после того, как я их запрашиваю, но они должны быть отсортированы по потомкам в алфавитном порядке.

$myArr[] = array(1,0,"instruments");
$myArr[] = array(2,1,"electric");
$myArr[] = array(3,1,"acoustic");
$myArr[] = array(4,2,"guitar");
$myArr[] = array(5,2,"banjo");
$myArr[] = array(6,3,"guitar");
$myArr[] = array(5,3,"banjo");

Или же:

array (
  0 => 
  array (
    0 => 1,
    1 => 0,
    2 => 'instruments',
  ),
  1 => 
  array (
    0 => 2,
    1 => 1,
    2 => 'electric',
  ),
  2 => 
  array (
    0 => 3,
    1 => 1,
    2 => 'acoustic',
  ),
  3 => 
  array (
    0 => 4,
    1 => 2,
    2 => 'guitar',
  ),
  4 => 
  array (
    0 => 5,
    1 => 2,
    2 => 'banjo',
  ),
  5 => 
  array (
    0 => 6,
    1 => 3,
    2 => 'guitar',
  ),
  6 => 
  array (
    0 => 5,
    1 => 3,
    2 => 'banjo',
  ),
)

Мне нужно, чтобы это было отсортировано так:

instruments
    acoustic
        banjo
        guitar
    electric
        banjo
        guitar

Спасибо!

1 ответ

Я не знаю, что именно вы хотите сделать, учитывая, что у вас нет примера кода, но не проще ли это сделать так:

SELECT * FROM my_table ORDER BY id, parent_id, title;

это упорядочивает сначала по id, затем по parent_id, когда идентификаторы одинаковы, и для title, если идентификаторы и идентификаторы parent_id одинаковы

Другие вопросы по тегам