Используя 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"