Mysql - fa

Hi!

Van egy egyszerű táblám (id int, dad int), ami egy egyszerű fát ábrázol. Olyan queryt lehet valahogyan gyártani, ami egy adott id- re visszaadja a gyökértől az id- ig vezető utat?

Tehát pl. egy tábla:


+----+------+
| id | dad  |
+----+------+
|  1 |    0 |
|  2 |    0 |
|  3 |    0 |
|  4 |    1 |
|  5 |    1 |
|  6 |    1 |
|  7 |    2 |
|  8 |    3 |
|  9 |    3 |
| 10 |    4 |
| 11 |    6 |
| 12 |    7 |
| 13 |    7 |
| 14 |    7 |
| 15 |    8 |
| 16 |    9 |
| 17 |    9 |
| 18 |    9 |
| 19 |   12 |
+----+------+

és mondjuk 19 esetén olyan sql- re lenne szükségem, ami ezt adja vissza valahogy:
+----+------+
| id | dad |
+----+------+
| 2 | 0 |
| 7 | 2 |
| 12 | 7 |
| 19 | 12 |
+----+------+
[/code]

Ami még fontos lehet, hogy a fa levelei nem feltétlenül helyezkednek egy egy szinten.

Köszi a válaszokat.

Hozzászólások

Hát, talán ezzel (Oracle kód):


PROMPT "Adja meg az utasitas nevet: "
ACCEPT ut

$ELECT LPAD(' ', 2*level)||operation||' '||options||' '||object_name terv
FROM plan_table
START WITH id = 0 AND statement_id = '&&ut'
CONNECT BY PRIOR id = parent_id AND statement_id = '&&ut';

Szerk. Ilyet persze a MySQL nem tud. Csomagot nem tud, ha jól láttam. Cseréld le másra, sz@r.

Vagy rekurzív select, vagy pedig egy tárolt eljárás (csomag), stb. a megoldás. Az előbbi ki van lőve, talán az utóbbi megoldható, hogy írsz valamilyen nyelven egy függvényt (C, stb. is esetleg, bár mysql-nél szerintem semmi ilyen nincs...)