Zur Navigation

MySQL: Nach Abstimmung und Unterantworten sortieren

1 Webby (Gast)

Hallo,
ich finde das Forum wirklich super. Es hat mir oft geholfen. Vielleicht könnt ihr mir ja heute eine meiner Fragen beantworten.

Und zwar habe ich eine Kommentarfunktion, bei der es auch möglich ist, Unterkommentare zu schreiben. Gespeichert werden diese in der Form:

id, parentid, abstimmung, txt

Jeder Beitrag erhält eine ID. Ein neuer Kommentar enthält die parentid 0, wenn ein Kommentar ein Unterkommentar ist, steht in der parentid die ID des zugehörigen Kommentars.

Die Ausgabe mache ich mit folgendem Befehl:

ODER BY IF (parentid=0, id), id

Damit erfolgt die Ausgabe in folgendem Stil:

Kommentar 1
-Unterkommentar 1 zu 1
-Unterkommentar 2 zu 1
Kommentar 2
-Unterkommentar 1 zu 2
Kommentar 3

Nun gibt es noch die Spalte abstimmung. Hier kann man für eine Antwort stimmen, wenn Sie einem gefällt. Nun möchte ich die Ausgabe so ändern, dass sie zusätzlich auch nach den Punkten der Kommentare sortiert, ohne das dabei die Unterkommentare verloren gehen. Also zum Beispiel so:

Kommentar 2 (10 punkte)
-Unterkommentar 1 zu 2
Kommentar 3 (5 punkte)
-Unterkommentar 1 zu 3
-Unterkommentar 2 zu 3
Kommentar 1 (0 punkte)

Die Unterkommentare sollen dabei unter den jeweiligen Kommentaren stehen bleiben. Ich habe jetzt schon einiges probiert, aber immer standen die Unterkommentare nicht mehr an der richtigen Stelle.

Ich hoffe ihr könnt mir dabei helfen, wie ich meine Abfrage umschreiben kann...

03.02.2012 14:52

2 Jörg Kruse

Vielleicht mithilfe einer Subquery:

SELECT *, IF(t1.parentid = 0, t1.abstimmung, (
    SELECT t2.abstimmung FROM table AS t2 WHERE t2.id = t1.parentid
)) AS parent_abstimmung
FROM table AS t1
ORDER BY parent_abstimmung DESC, IF(parentid = 0, id, parentid), abstimmung DESC

... weiß allerdings nicht, wie performant das ist

03.02.2012 21:29 | geändert: 03.02.2012 21:30

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]