-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hallo!
On Wednesday 04 February 2004 16:11, Jens Puruckherr wrote:
Hallo ihr lieben Leute,
vielleicht kann mir mal jemand fix auf die Sprünge helfen. Ich habe in eine DB eine simple Baumstruktur:
+-----------------------------------+
| sohn | vater | aktiv |
+-----------------------------------+
| 1 | 0 | 1 | | 2 | 1 | 1 | | 3 | 2 | 0 | | 4 | 2 | 1 | | 5 | 3 | 1 | | 6 | 3 | 1 |
....
Ich will jetzt alle aktiven sohn - Vater - Beziehungen haben, bei denen nicht nur die aktuelle Beziehung aktiv ist, sondern alle Väter bis obenhin. am konkreten Beispiel muss also sowss rauskommen:
1 -> 0 2 -> 1 4 -> 2
Es dürfen NICHT erscheinen:
3 -> 2 (das ist einfach) 5 -> 3 6 -> 3
wie erschlage ich das in möglichst wenigen Schritten? Die Sache mit den Nested Sets habe ich mir schon angeschaut, das triffts hier aber nicht ganz. Und wie immer, sind die Daten schon da und natürlich recht umfangreich und verschachtelt.
Muss ich wirklich was rekursives bauen oder gibts dafür 'ne prima Logik:
Gibt mir alle Vater-Sohn-Beziehungen aus, die in Ihrem Stammbaum nicht irgendwo inaktiv sind.
Ich hab da ne Idee, weiß aber nicht, ob das wirklich funktioniert. 1. SELECT * FROM table WHERE aktiv=1 2. Inner Join des Ergebnisses mit table wobei result.vater = table.sohn
Vielleicht ist das ja ein Ansatz...
Mit freundlichen Grüßen
Jens Puruckherr
cu Markus