Philipp Hasenfratz: Foren-Programmierung: Organisation der Nachrichten

Beitrag lesen

Hi,
folgendermaßen könnte die Tabelle aussehen (nach Bezugs_id sortiert)
Thread_id Message_id Bezugs_id
1             1         0
1             2         1
1             3         1
1             4         2
1             5         3

aber eigentl. sollte sie ja so aussehen:

1             1         0
1             2         1
1             4         2
1             3         1
1             5         3

In der Tat, das ist ein Problem. Ich habe keine Methode gefunden, wie man das in SQL formuliert. Und ich denke, dass es auch keine Lösung gibt. Die Rheienfolge ist ja "dynamisch", d. h. es gibt keine staatische Daten, die sortiert werden, sondern es ist eine dynamische Sortierung basiert auf Daten des letzten Eintrags ( die Bezugs_id einer Message_id, muss immer die Message_id des zuvorgegangenen Beitrags sein). SQL sieht für dies keine Methode vor.

In mysql und den meisten anderen RDBMS gibt's trotzdem einige "Tricks", wie man solche SQL Probleme umgehen kann: User-Variablen:

SELECT @UserVariable153:=15;
...
SELECT @UserVariable153;

gibt 15 aus. Vielleicht lässt sich so was basteln, aber Achtung: Diese Spezifikation gilt nur für mysql!

Sowas zum Annähern an das Problem:

SELECT @LastMessageID:=message_id AS '1', ... FROM ...
   WHERE Bezugs_id=@LastMessageID
 ORDER BY thread_id, message_id

Nur ein Tip, wie so ein Trick aussehen könnte, muss wohl noch angepasst werden. Geprüft habe ich's auch nicht.

Hoffe, dass dir das was Hilft.

Gruss

---Philipp

PS: Es wäre tausend-Mal klüger, diese Aufgabe einem Perl/php - Script zu überlassen, da SQL wirklich nicht dafür "prädestiniert" ist!