Opossom: rekursives update in mysql tabelle

Einen wunderschönen guten Morgen!
Ich versuche ein php Forum mit einer MySQL db zu schrreiben habe für posts eine eigene Tabelle mit: id text vorpostid postreihe
Da es eine etwas komplexere darstellung der Posts ist muss ich in der spalte postreihe immer 1 rauf zählen wenn eine Antwort auf ein Post geschrieben wird (damit man weiß wieviele Antworten ein post hat und es dient dazu immer die posts mit den meißten antworten zu zeigen) Das geht ja noch über die vorpostid da ich die weiß und den post mit post.id = post.vorpostid updaten kann. Wenn ich aber eine Antwort auf eine Antwort schreib sollen bei beiden Vorposts um 1 rauf gezählt werden. Mit einer php Schleife wäre das lösbar leider sehr aufwändig für den Server wenn mal viele Posts drinn sind.
Kann ich das mit einem SQL befehl lösen dass er im post mit der richtigen id 1 rauf zählt dann die vorpostid von diesem Post selectet und zum post mit der neuen id weiter schaut und den updated solange bis er bei 0 angekommen ist? Bzw habt ihr eine bessere Lösung wie ich Volgeantworten dazu zählen kann? Danke
mfg das opossom

  1. Hi!

    Kann ich das mit einem SQL befehl lösen dass er im post mit der richtigen id 1 rauf zählt dann die vorpostid von diesem Post selectet und zum post mit der neuen id weiter schaut und den updated solange bis er bei 0 angekommen ist?

    Mit einer Stored Procedure verlegst du nur den Aufwand von PHP ins DBMS. Das kann schon Punkte bringen, wenn/weil viel Kommunikation zwischen PHP und MySQL wegfällt.

    Eine Lösung mit einer einzigen SQL-Anweisung wirst du nur dann erstellen können, wenn du einen kompletten Zweig auf einmal ansprechen kannst. Das ist bei verschachtelten Strukturen vor allem mit Nested Sets möglich. Wenn du diese verwendest, verschwindet auch dein eigentliches Problem, denn eine händische Verwaltung der Antwortanzahl ist dann nicht mehr nötig. Du kannst ja einen kompletten Zweig selektieren und die Ergebnismenge zählen lassen (COUNT(*), nicht mysql_num_rows(), es sei denn, du benötigst auch noch die Datensätze).

    P.S. Im Deutschen schreibt man zusammengesetzte Wörter entweder zusammen oder mit Bindestrich, nicht jedoch mit Leerzeichen. Diese bremsen beim Lesen. (Ausnahmen: nicht eingedeutschte fremdsprachliche Begriffe, wie Nested Sets)

    Lo!