Topic: hierarchinis selectas is vienos lentelės.

tarkim lentelė yra iš laukų
id,
parent_id,
info
. Ir esmė ta kad joje yra medžio struktūra patalpinta kaip pvz:

id | parent_id | info
-------------------
1 | 0 | 'skyrius1'
2 | 0 | 'skyrius2'
3 | 2 | 'skyrius2.1'
4 | 0 | 'skyrius3'
5 | 2 | 'skyrius2.2'
6 | 5 | 'skyrius2.2.1'


tai yra  mazdaug toks medis:

'skyrius1'
'skyrius2'
----'skyrius2.1'
----'skyrius2.2'
--------'skyrius2.2.1'
'skyrius3'

kaip parasyt select uzklausa pagal "WHERE id=6" ar kažką panašaus, kad gražintų maždaug taip:

1 | 0 | 'skyrius1'
2 | 0 | 'skyrius2'
5 | 2 | 'skyrius2.2'
6 | 5 | 'skyrius2.2.1'

?
na ta prasme kad pagal vieną šaką surinktų kitas šakas esančias arčiau rooot nei ši..?

Re: hierarchinis selectas is vienos lentelės.

Na paprastos užklausos neparašysi, nes duomenų struktūra nepritaikyta keliamam uždaviniui.

Galima:
a) problemą spręsti su vidinėm procedūrom pasinaudojant rekursiją;
b) pertvarkyti duomenų struktūrą į tinkamesnę :http://www.sitepoint.com/article/hierarchical-data-database/;

Re: hierarchinis selectas is vienos lentelės.

na oracle turi tokius CONECT BY PRIOR ir START WITH..
o ar galima su mysql kaip nors apsirasyti funkcija kaip su postgre ir vykdyti ja kai yra uzklausa?

Re: hierarchinis selectas is vienos lentelės.

Galima nuo 5.x versijos: http://dev.mysql.com/doc/refman/5.0/en/ … dures.html