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;