Anna: MySQL - Forum mit Antworten auf Antworten - Nur wie???

Beitrag lesen

Antwort "2.3" hat einen Integerwert als ID, und die wird bei Antwort "2.3.1" wiederum als parent-ID abgelegt.

Ok, also speichere ich einfach für jeden Eintrag eine Parent-ID, die mir dann anzeigt, worauf sich diese Antwort bezieht.

Und was schlagt ihr als Typ vor? INT oder VARCHAR wegen den Punkten?
Man könnte natürlich die Punkte einfach weglassen.
Also anstelle von 2.3.1 könnte man 231 speichern.
Aber das geht auch nicht, weil das spätestens bei Antwort 11 zu Problemen führt. Die unterscheidet sich ja dann nicht mehr von Antwort 1 auf Antwort 1.

------------
Thema 1 (Parent-ID: 0):
   - Anwort 1 (Parent-ID: 0)
   - Anwort 2 (Parent-ID: 0)
      -Anwort 2.1 (Parent-ID: 2)
      -Anwort 2.2 (Parent-ID: 2)
      -Anwort 2.3 (Parent-ID: 2)
         -Anwort 2.3.1 (Parent-ID: 2.3)
   - Anwort 3 (Parent-ID: 0)
   - Anwort 4 (Parent-ID: 0)
   - Anwort 5 (Parent-ID: 0)

Thema 2 (Parent-ID: 0):
   - Anwort 1 (Parent-ID: 0)
   - Anwort 2 (Parent-ID: 0)
   ...
------------

Ich dachte zuerst kurz daran, daß es vielleicht Probleme macht, wenn alle "Themen-Anfänge" (also: "Thema 1" und "Thema 2") und die direkt darauf folgenden Antworten alle als Parent-ID 0 haben. Aber die einzelnen Themen unterscheiden sich ja auch noch anhand der Themen-ID.
Und die Reihenfolge der Antworten mit der gleichen Parent-ID kann man ja über das Datum ordnen.

Aber da bleibt natürlich immernoch die Frage, wie man das in ein MySQL Query verwandeln kann. Unabhängig davon, wie es jetzt gespeichert wird.

Sagen wir mal, ich will die 10 neuesten Einträge von einem bestimmten Thema anzeigen, aber mit den dazugehörigen Antworten.

Ich kann ja nicht erstmal alle mit Parent-ID 0 raussuchen und dann einzeln nachfragen, oder es Parent-IDs gibt, die sich darauf beziehen.

Ich les mal das über nested sets, vielleicht finde ich da was...