Using MySQL, I want to return a list of parents, from a table that has a field structure like this. ID,PARENTID,NAME (a standard parent-child hierarchy). I would like to traverse "up" the tree to return a list of ALL 'parents'.
I realize that "nested set", might be a better way to handle this - but currently I cannot change the structure of the data. I will look to do that in the future. Currently - my set of data will realistically contain a few levels of depth - nothing crazy... maybe 2-5 so my recursive hit shouldn't be 'too expensive'.
I've looked at the solutions presented in SQL Server get parent list - but this syntax bombs in mySQL...
Does anyone have an example of how to do this?
@kevin - thx for link - but I still get error. ("every derived table must have it's own alias")
Here's what I did (modified syntax form above article - to 'fit' MySQL) - I clearly missed something...
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)
)
thoughts???
EXAMPLE:
ID PARENTID NAME
9146 0 thing1
9147 0 thing2
9148 9146 thing3
9149 9148 thing4
9150 0 thing5
9151 9149 thing6
Query for parents of "thing3" Returns "9148,9146"
Query for parents of "thing6" Returns "9149,9148,9146,0"
as my_alias. But in any case it's not possible to rewrite SQL server's query for MySQL because MySQL does not support recursive subquerying. If you don't want to limit the query up to several levels then you need to create a stored function or procedure.