[MySql] Letzte Einträge auslesen

DirkHo

Erfahrenes Mitglied
Hallo,

aus dem phpBB möchte ich für meine Internetseite die letzten X Beiträge auslesen. Das wäre ja an für sich kein Problem. Ich möchte allerdings pro topic_id nur einen Eintrag bekommen.

Ein reines GROUP BY löst das Problem meiner Meinung nach nicht, auch wenn nicht gruppierte Attribute ja auch ausgelesen werden können (im Geegensatz zu z.B. Oracle)?! Es würde ja immer die Werte zum ersten Treffer des GROUP BY genommen und dadurch immer der früheste Eintrag je topic_id.
Z.B.

post_id | topic_id | post_name | post_time
2 | 1 | Post 1 zu Topic 1 | 192839302
3 | 1 | Post 2 zu Topic 1 192839340

Dann würde bei einem SELECT * FROM forum_posts GROUP BY topic_id doch immer der Eintrag mit der

post_id | topic_id | post_name | post_time
2 | 1 | Post 1 zu Topic 1 | 192839302

ausgegeben?!

Vielen Dank und viele Grüße,

Dirk
 
Sind die Topic_id und post_id unique und fortlaufen?
Dann könntest Du entweder mit " SELECT (TOP 1) Spaltenname FROM tabelle ORDER BY Spaltenname DESC" arbeiten. Du sortierst also nach einem Wert und lässt dann nur den ersten Treffer anzeigen.
 
Vielen Dank für deine Antwort. TOP war mir bisher nicht bekannt. Das hört sich nach was brauchbarem an, müsste ich aber noch testen.

topic_id is unique in der topic-Tabelle, aber nicht in der Post-Tabelle (wo es ein Fremdschlüssel ist, da es logischerweise mehrere posts zu einem topic geben kann), post_id ist eindeutig, da der Primärschlüssel in der Post-Tabelle.
 
Hi,

eine gute Übersicht über die Möglichkeiten findest du auf Wikipedia.
In MySQL würdest du die Anazhl zum Beispiel nicht mit TOP, sondern mit LIMIT einschränken (... ORDER BY column LIMIT 0,1).
In TransactSQL (Microsoft) würde du mit einer anderen Syntax von TOP abfragen (SELECT TOP 100 coulm1, column2 FROM ....).

Grüsse,
BK
 
Zurück