"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.