Данный пример будет работать только на версиях
MySQL 8
иMariaDB 10.3
и выше, где доступен рекурсивный операторwith
.
Заменям поля для выборки и таблицу, а также указываем id ресурса от которого искать потомков (parent).
with recursive cte (id, pagetitle, parent) as (
select id,
pagetitle,
parent
from modx_site_content
where parent = 3
union all
select p.id,
p.pagetitle,
p.parent
from modx_site_content p
inner join cte
on p.parent = cte.id
)
select * from cte;
В результате списком будут выведены потомки сначала первого уровня, потом потомки второго уровня и т.д.