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.
- 1301 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
Bevallom őszintén ebből nem túl sokat értek.. Amúgy ennek működnie kellene mysql- lel? Oracle most nincs kéznél, de áttérni sem tudok rá jelen esetben, meg nem is nagyon szeretnék egy select miatt.
- A hozzászóláshoz be kell jelentkezni
ha tudod hogy max. hany szintu a fa akkor left join annyiszor ahany szintu, ha nem tudod akkor 1 select-el nem lehet.
- A hozzászóláshoz be kell jelentkezni
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...)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni