Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

simulacija rekurzije (ili nešto slično)

[es] :: Baze podataka :: simulacija rekurzije (ili nešto slično)

[ Pregleda: 3941 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

antix

Član broj: 8388
Poruke: 265
*.mobtel.co.yu

Jabber: antix@elitesecurity.org


Profil

icon simulacija rekurzije (ili nešto slično)08.06.2004. u 15:24 - pre 240 meseci
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....
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com



+79 Profil

icon Re: simulacija rekurzije (ili nešto slično)08.06.2004. u 19:36 - pre 240 meseci
Probaj ovo
http://www.yafla.com/papers/sqlhierarchies/sqlhierarchies.htm

:-)
 
Odgovor na temu

antix

Član broj: 8388
Poruke: 265
*.mobtel.co.yu

Jabber: antix@elitesecurity.org


Profil

icon Re: simulacija rekurzije (ili nešto slično)08.06.2004. u 22:31 - pre 240 meseci
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!?
 
Odgovor na temu

GoranVucicevic
Novi Sad

Član broj: 28045
Poruke: 66
*.dialup.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: simulacija rekurzije (ili nešto slično)09.06.2004. u 21:59 - pre 240 meseci
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, ',', ''))
Vidi: GoranVuc #4934
 
Odgovor na temu

[es] :: Baze podataka :: simulacija rekurzije (ili nešto slično)

[ Pregleda: 3941 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.