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”
In this example we are checking 5 levels up: