Рекурсивный запрос на поиск всех родителей

16 Июля 2021 16:09

Данный пример найдет все родительские ресурсы.

Заменям поля для выборки и таблицу, а также указываем id ресурса от которого искать родителей.

SELECT T2.id, T2.pagetitle,T2.parent
FROM (
    SELECT
        @r AS _id,
        (SELECT @r := parent FROM modx_site_content WHERE id = _id) AS parent,
        @l := @l + 1 AS lvl
    FROM
        (SELECT @r := 69, @l := 0) vars,
        modx_site_content m
    WHERE @r <> 0) T1
JOIN modx_site_content T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC

Примечание. В числе найденных ресурсов будет также и ресурс, от которого производился поиск