MySQL - Einträge gruppieren

tim-pong

Mitglied
Hi Leudde,

ich weiß, der Titel ist komisch, aber das ist mein Problem ja schließlich auch...

Folgendes: ich habe eine Tabelle in der Forenbeiträge aufgelistet werden. Diese heißt "prefix_posts". Jeder Beitrag hat in der Spalte "thread" noch die entsprechende Thread-ID, damit die Beiträge ihren Threads zugeordnet werden können.

Jetzt möchte ich die 5 neuesten Beiträge aufgelistet haben, jedoch ohne Dopplung. Sprich: wenn die beiden neuesten Beiträge beide dem gleichen Thread zugeordnet sind, soll nur der neuere angezeigt werden.

Kann man das über den mysql_query lösen oder braucht man vielleicht eine While-Schleife, kombiniert mit einer If-Abfrage (Beides hab ich schon probiert).

Kann mir jemand das Prinzip erklären?!

Viele Grüße,
Tim
 
"GROUP BY thread"...

...funktioniert leider nicht. Wenn ich das einbaue bekomme ich (bei "ORDER BY id DESC") die ältesten Threads aber davon die neuesten Antworten, und bei "ORDER BY id" ohne DESC die neuesten Threads und darin die ältesten Beiträge :(

Ich möchte aber die neuesten Beiträge ohne Dopplung der Threads. Also, wenn in einem Thread zweimal hintereinander ein Post abgegeben wurde, dann soll nur dee neueste angezeigt werden!
 
Zuletzt bearbeitet:
Hi

wenn Subselects unterstützt würden, könntest Du es mit folgendem Statement evtl. lösen. Ist allerdings nicht mySQL getestet, weil meine Version dies nicht unterstützt. In dem MS-basiserten Datenbanken funktioniert dass, wobei man Limit durch den Top x direkt nach dem Select austauschen muss.

SELECT id, datum, nic
FROM Forum AS A
WHERE datum = (SELECT max(datum) FROM forum AS B WHERE B.id = A.id) limit 5;

Wenn nicht, vielleicht hilft Dir dies weiter:
http://www.tutorials.de/tutorials198169.html
oder
http://www.tutorials.de/tutorials197684.html
 
Zuletzt bearbeitet:
Ich habe das Problem jetzt gelöst. Zwar um ein paar Ecken, aber doch effizient!

Die Tabelle mit den Threads bekommt eine zusätzliche Spalte ("counter"), in der ein Counter ist. Dieser Counter wird jedesmal, wenn in dem entsprechenden Thread ein neuer Beitrag verfasst wird, hinaufgezählt. So braucht man nur nach "counter" sortieren und dann aus der Tabelle "posts" den neuesten Beitrag mit der entsprechenden Thread-ID herauslesen...
 
Zurück