/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
recursiv udtræk
Fra : Leonard


Dato : 25-09-07 18:22

Jeg har en MySQL-tabel med et stamtræ med 3 felter:

id, fars-id, mors-id

Der vil jeg gerne lave et udtræk, så jeg får 5 generationer ud:

far, farfar, farmor, farfarfar, farfarfarmor, farmorfar, farmormor osv
mor, morfar, mormor, morfarfar osv

En gren i et træ skal følges indtil 5. led eller hvis en værdi er NULL

Jeg kan lave en stribe IF, men det bliver til ret mange kodelinier og må
kunne gøres nemmere, jeg kan bare ikke lige regne den ud.

--
Leonard
Mine biler: http://vw.leonard.dk/

 
 
Andreas Andersen (25-09-2007)
Kommentar
Fra : Andreas Andersen


Dato : 25-09-07 20:41

"Leonard" <piper28a@gmail.invalid> wrote in message
news:k12z6zsrscul.ceq3n8df6mik$.dlg@40tude.net...
> Jeg har en MySQL-tabel med et stamtræ med 3 felter:
>
> id, fars-id, mors-id
>
> Der vil jeg gerne lave et udtræk, så jeg får 5 generationer ud:
>
> far, farfar, farmor, farfarfar, farfarfarmor, farmorfar, farmormor osv
> mor, morfar, mormor, morfarfar osv
>
> En gren i et træ skal følges indtil 5. led eller hvis en værdi er NULL
>
> Jeg kan lave en stribe IF, men det bliver til ret mange kodelinier og må
> kunne gøres nemmere, jeg kan bare ikke lige regne den ud.

Man kan selvfølgelig lave en rekursiv funktion med en masse forespørgsler,
men det bliver jo nok lidt tungt. Jeg fandt en artikel, der beskriver en
snedig måde at gemme et træ på, så man kan lave det udtræk du ønsker med kun
2 forespørgsler. Man skal bare gemme start og slut-index for en
preorder-traversal for hver knude i træet. Artiklen, der beskriver begge
muligheder, er her:
http://www.sitepoint.com/article/hierarchical-data-database/1.


Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste