получить рекурсивный список родителей

Используя MySQL, я хочу вернуть список родителей из таблицы, имеющей такую структуру полей. ID,PARENTID,NAME (стандартная иерархия родитель-ребенок). Я хотел бы пройти "вверх" по дереву, чтобы вернуть список ВСЕХ "родителей".

Я понимаю, что "вложенный набор" может быть лучшим способом справиться с этим - но в настоящее время я не могу изменить структуру данных. Я буду искать возможность сделать это в будущем. В настоящее время - мой набор данных будет реально содержать несколько уровней глубины - ничего сумасшедшего... возможно 2-5, так что мой рекурсивный удар не должен быть "слишком дорогим".

Я просмотрел решения, представленные в SQL Server get parent list - но этот синтаксис бомбит в mySQL...

Есть ли у кого-нибудь пример того, как это сделать?

@kevin - спасибо за ссылку - но я все равно получаю ошибку. ("каждая производная таблица должна иметь свой собственный псевдоним")

Вот что я сделал (модифицировал синтаксис из статьи выше - чтобы "подогнать" под MySQL) - я явно что-то упустил...

SELECT parents.*
FROM  (
    SELECT taskID,  task,  parentID,  0 as level
    FROM   tasks
    WHERE taskidID = 9147
    UNION ALL
    SELECT  taskID, task,  parentID,  Level + 1 
    FROM   tasks
    WHERE  taskID = (SELECT parentID FROM parents ORDER BY level DESC LIMIT 1)
    )

мысли???

ПРИМЕР:

ID      PARENTID    NAME
9146    0       thing1
9147    0       thing2
9148    9146        thing3
9149    9148        thing4
9150    0       thing5
9151    9149        thing6

Запрос родителей "thing3" Возвращает "9148,9146"

Запрос родителей "thing6" Возвращает "9149,9148,9146,0"

9
задан Community 23 May 2017 в 12:18
поделиться