[ antix @ 08.06.2004. 15:24 ] @
imam polja u tabeli groups:

group_name
group_id
parent_id
group_path


group_name je ime grupe

group_id je jedinstveni id grupe

parent_id je id roditeljske grupe

group_path su id-ovi svih roditeljskih grupa, tj ako je grupa dublje u hijerahiji onda
nanižemo sve parent_id-ove rastavljene zarezom


ako je grupa na vrhu hijerarhije tada joj je parent_id jednak 0 i group_path je prazan string
(tj varchar). Više grupa može da bude na vrhu hijerarhije (tj. bez roditeljske grupe) i svaka
grupa može da ima proizvoljan broj podređenih podgrupa.


primjer:
Code:

group_name                group_id             parent_id               group_path
-------------------------------------------------------------------------------

Matematika                   1                           0                           ""

Biologija                        2                           0                           ""

Analiza                      3                           1                           1,

Algebra                         4                           1                           1,

Komplexna analiza           5                           3                           1,3,

Linearna algebra             6                           4                           1,4,

Vektorski prostori            7                           6                          1,4,6,


------------------------------------------------------------------------------


treba mi upit (ako je moguć) koji će da mi vrati sve nazive grupa u ''pravilnom'' rasporedu tj.
da naniže ime grupe pa imena svih njenih podgrupa (i tako rekurzivno).
Znači za ovaj gore navedeni primjer trebalo bi da vrati nešto ovako:

Biologija
Matematika
Analiza
Komplexna analiza
Algebra
Linearna algebra
Vektorski prostori

znači bitno je samo da podgrupe idu odmah iza svojih
roditeljskih grupa i tako rekurzivno do kraja.

Radim sa MSSQL ali može i u nekom drugom dijalektu SQL-a

Hvala svima unaprijed za sve ideje....
[ Zidar @ 08.06.2004. 19:36 ] @
Probaj ovo
http://www.yafla.com/papers/sqlhierarchies/sqlhierarchies.htm

:-)
[ antix @ 08.06.2004. 22:31 ] @
Hvala na linku!!!

Znao sam za rješenje preko funkcija ali je link svejedno dobar. Više
me zanimalo da li postoji neki SQL upit koji će da odradi isti posao!?
[ GoranVucicevic @ 09.06.2004. 21:59 ] @
Mogao bi da iskoristis path polje (posto ga vec imas) tako sto bi selektovao to sto ti treba + polje koje bi predstavljalo broj ponavljanja path separatora u path-u (u tvom konkretnom primeru za path: '1,4,6,' -> broj ponavljanja = 3) i po tom izvedenom polju treba da sortiras ascending, a zatim po group_id, mada moram da priznam da te nisam bas najbolje razumeo kako hoces sa ti se urede podaci.
Upit za polje bi mogao da ti bude :
LEN(group_path) - LEN(REPLACE(group_path, ',', ''))