@maragon

Как вывести все записи по parent_id MYSQL?

Имеется таблица:
-- test
--- id | name | parent_id
--- 1 | Первый | 0
--- 2 | Второй | 1
--- 3 | Третий | 2
..etc


Как вывести всю иерархию за один запрос? Т.е, мне нужны все дочерние элементы где parent_id = 2
( Соответственно должно вывести записи с id = 3,2,1 )
  • Вопрос задан
  • 1124 просмотра
Пригласить эксперта
Ответы на вопрос 2
Maksclub
@Maksclub
maksfedorov.ru
Если вам в программе нужна иерархия, то нужно рекурсией выводить...
Но знайте — в 2018 году это не есть гуд, только если у вас немного категорий, если много и вы только-только проектируете БД, то сделайте через Nested Sets (изучать придется дольше, но работоспособность дикая)

По вопросу:
Если рекурсией — это делается на бекенде (например в PHP) написать функцию, которая вызывает саму себя и в каждой итерации будет к каждой категории записывать детей...

Запрос будет тогда максимально простым:
SELECT t.id, t.name
FROM test t
WHERE t.parent_id=2
ORDER BY t.parent_id


Забавно
Вчера помогал человечку на форуме Simpla CMS наоборот уйти от рекурсии, тк там 50 тысяч категорий и как раз проблема вылезла с рекурсией... почитайте о проблеме:
forum.simplacms.ru/topic/13311-%D0%BE%D0%B3%D1%80%...
При таких объемах данных — проблемы полезут сразу и на стороне запросов и на стороне бекенда
Ответ написан
Комментировать
MySQL - никак
В PostgreSQL, например, через with recurisve
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы