Hallo,
Guten Tag
Ich habe folgende Tabelle:
+----+---------+--------------+
| id | parent | wort |
+----+---------+--------------+
| 1 | 1 | neues Wort || 2 | 1 | Baum |
| 3 | 2 | Ast |
| 4 | 1 | Haus |
| 5 | 4 | Fenster |
| 6 | 1 | Hand |
| 7 | 1 | Meer |
| 8 | 6 | Finger |
Als Resultat möchte ich:
2 Baum
3 Baum > Ast
4 Haus
5 Haus > Fenster
6 Hand
8 Hand > Finger
7 MeerWas bisher geschah:
SELECT a.id,
IF(a.parent = 1,
a.wort,
CONCAT(b.wort, ' > ', a.wort)) AS blah
FROM tabelle AS a, tabelle AS b
bis hier scheint mir das ok. Ich empfehle dir aber eine bessere Strukturierung.
WHERE a.id=b.parent
Dies erscheint mir falsch, sollte eher so lauten:
where a.parent = b.id
AND b.parent > 1
ORDER BY blah
Nach der Verknüpfung der tabelle mit sich selbst über a.parent = b.id erhälst du folgendes Skalarprodukt:
+------+-----------+--------------+------+-----------+--------------+
| a.id | a.parent | a.wort | b.id | b.parent | b.wort |
+------+-----------+--------------+------+-----------+--------------+
| 1 | 1 | neues Wort | 1 | 1 | neues Wort |
---------------------------------------------------------------------
| 2 | 1 | Baum | 1 | 1 | neues Wort |
---------------------------------------------------------------------
| 3 | 2 | Ast | 2 | 1 | Baum |
---------------------------------------------------------------------
| 4 | 1 | Haus | 1 | 1 | neues Wort |
---------------------------------------------------------------------
| 5 | 4 | Fenster | 4 | 1 | Haus |
---------------------------------------------------------------------
| 6 | 1 | Hand | 1 | 1 | neues Wort |
---------------------------------------------------------------------
| 7 | 1 | Meer | 1 | 1 | neues Wort |
---------------------------------------------------------------------
| 8 | 6 | Finger | 6 | 1 | Hand |
---------------------------------------------------------------------
Hieraus triffst du jetzt deine Einschränkunken/Bedingungen:
Zeige immer a.id.
Wenn a.parent = 1, zeige a.wort, sonst zeige (b.wort > a.wort)
hth.
cu,
Michael