MySQL приводят в порядок родительские / дочерние категории

Мой вопрос довольно прост, но я не знаю, как на него ответить...

У меня есть таблица со следующими полями и значениями:

категории

ID | PARENT_ID | NAME
---------------------
 1 |     0     | Cat1
 2 |     0     | Cat2
 3 |     1     | Cat3
 4 |     1     | Cat4
 5 |     3     | Cat5
 6 |     2     | Cat6
 7 |     0     | Cat7
.....

По сути, мне нужно получать данные только с использованием MySQL - отсортировано по Parent_id. Кроме того, для каждого имени мне нужно добавить знак "-" в зависимости от уровня.
В конце это должно выглядеть так:

ID | PARENT_ID | NAME
---------------------
 1 |     0     | Cat1
 3 |     1     | -Cat3
 5 |     3     | --Cat5
 4 |     1     | -Cat4
 2 |     0     | Cat2
 6 |     2     | -Cat6
 7 |     0     | Cat7

Я не знаю, как начать создавать такой запрос - я думал о порядке по parent_id, но он не будет работать.

Есть ли функция или метод, который я мог бы использовать для достижения этой цели? Любые намеки будут высоко оценены.

2 ответа

- не совсем уверен, почему или что это может означать, но я думаю, что это будет делать то, что вы просите:

select ID,PARENT_ID,concat(substring('---------------',1,NAME),NAME) as NAME
from table
order by PARENT_ID
  • обратите внимание, что если существует более 15 "уровней" (или PARENT_ID > 15), вам нужно добавить еще "-".

Попробуйте использовать функцию REPEAT SQL. С помощью которого вы можете сделать Выберите контакт ( REPEAT( '-', parent_id), имя) из таблицы порядка по parent_id;

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