Mailinglisten-Archive |
vorab: nein - ich habe keine Möglichkeit ohne HTML zu posten ... > Ich möchte jetzt auf einer Seite zb. 4 Generationen des ersten Hundes > ausfindig machen, eigentlich ja kein Problem mit vielen *mysql_query* > befehlen. aber ich denke mir, da ich bei 4 Generationen 30 Hunde > hinterher hätte, dauern soviele Abfragen doch recht lange, oder nicht ? also wir haben das bei uns so geloest, daß wir zusätzlich zur (in deinem Fall) Hunde-Tabelle eine zusaetzliche Tabelle angelegt haben, in der drinnestand, wer noch alles im Baum unter einem bestimmten Eintrag einsortiert ist. Beispiel: 1+2 sind Vater und Mutter von 4 3+4 sind Vater und Mutter von 5 5 ist der jüngste Spross 1 2 \_/ 3 4 \_/ 5 Nun haben wir dann eine Tabelle angelegt: idx parentIdx grad 5 3 1 5 4 1 5 1 2 5 2 2 4 1 1 4 2 1 Nun kann man einfach einen Select auf Idx 5 machen und bekommt automatisch alle Vorfahren raus. Wenn man zusätzlich noch einen Grad einführt, kann man auch die "Entfernung" der Abstammung ohne weiteres begrenzen. Verwande von 789 ersten Grades ist also SELECT * from <tab-name> WHERE idx=5 AND grad<=1 Die aufgeklappte Tabelle wird zwar schnell groß bei tiefer Verschachtelung, aber man erspart sich somit viele einzelne Selects um den Baum "per Hand" durchzugehen. Man muss halt nur darauf achten, daß man diese Tabelle immer aktualisiert, sobald sich an der Relation was ändert (was ja hier nicht passieren sollte) oder ein neuer Eintrag hinzukommt (was wohl eher der Fall sein wird). Hoffe, daß ich mich verständlich ausgedrückt habe ;) MfG Michael Metz C&A HV, Orga Tel.: +49 (211) 166 2121 Fax.: +49 (211) 166 2152
php::bar PHP Wiki - Listenarchive