Hallo Bio,
Tabelle object:
| id |
| name |
parent_id Warum schreibst Du eigentlich nicht
SELECT object.name
FROM object
WHERE parent_id = id;
ich verstehe nicht so ganz was Du meinst. Denn mit dem SQL Statement erhalte ich nicht die gewünschte Ausgabe (genau genommen gar keine Datensätze ;-) oder ich habe etwas übersehen?
Vielleicht habe ich mich in meinem ersten Posting etwas ungenau ausgedrückt. Ich möchte alle Kind Elemente erhalten, also auch die Kindes Kinder und wiederum deren Kinder usw.
In der Tabelle object ist die 'id' der Primärschlüssel, 'name' ein beliebiger Name und 'parent_id' zeigt wieder auf die 'id'.
Beispiel Daten für die object Tabelle:
| id | name | parent_id |
-------------------------
| 1 | a | 0 |
| 2 | b | 0 |
| 3 | aa | 1 |
| 4 | aaa | 3 |
| 5 | aaaa | 4 |
| 6 | bb | 2 |
| 7 | bbb | 6 |
Für die id=1 wären es die Datensätze:
| id | name | parent_id |
-------------------------
| 3 | aa | 1 |
| 4 | aaa | 3 |
| 5 | aaaa | 4 |
Also die ids 3, 4 und 5. So würde das Statement um die Namen aller Kinder (und Kindes Kinder) zu ermitteln wie folgt aussehen:
SELECT
object.name
FROM
object
WHERE
object.id IN (3,4,5)
Dies liefert mir die gewünschten Namen "aa","aaa" und "aaaa".
Diese Liste mit allen Kindern kann ich natürlich serverseitig ermitteln, doch bei relativ vielen Datensätzen (ca. 280.000) wie in meinem Fall würde im Statement der 'IN (x,y,z)'-Teil sehr groß werden.
Die Idee ist dies mit Hilfe einer zweiten Tabelle und dem entsprechendem JOIN zu verhindern.
Viele Grüße
Andreas