1

First of all this question is similar to this one but the difference is that I have an unknown quantity of parents.

Is is possible and if so how would I get all parents of a child when I only know the Id of any child?

I have a table like:

+----+------------+----------+--------+
| Id |    name    | position | parent |
+----+------------+----------+--------+
|  1 |        top |        1 |   NULL |
|  2 |     middle |        1 |      1 |
|  3 | bottom_1_1 |        1 |      2 |
|  4 | bottom_1_2 |        2 |      2 |
|  5 |   middle_2 |        2 |      1 |
|  6 | bottom_2_1 |        1 |      5 |
|  7 | bottom_2_2 |        2 |      5 |

Which would correspond to something like this visually:

top
 Ͱ middle
    Ͱ bottom_1_1
    Ͱ bottom_1_2
 Ͱ middle_2 
    Ͱ bottom_2_1
    Ͱ bottom_2_2

Unfortunately my knowledge of MySQL is not advanced enough to show some kind of foreach join method to give you as an example as I would only be able to go up 1 in the tree like:

SELECT * FROM table WHERE Id in (7, (SELECT parent FROM table WHERE Id = 7))

This would return:

+----+------------+----------+--------+
| Id |    name    | position | parent |
+----+------------+----------+--------+
|  5 |   middle_2 |        2 |      1 |
|  7 | bottom_2_1 |        2 |      5 |

But I would need something like the example below as the first entry of the above example still has a parent

+----+------------+----------+--------+
| Id |    name    | position | parent |
+----+------------+----------+--------+
|  1 |        top |        1 |   NULL |
|  5 |   middle_2 |        2 |      1 |
|  7 | bottom_2_1 |        2 |      5 |
Bill Karwin
  • 538,548
  • 86
  • 673
  • 828
Wanjia
  • 799
  • 5
  • 19

0 Answers0