Ilja: MySQL mit spezieller Sortierung

Beitrag lesen

yo,

danke für tipps

nun ja, bis jetzt war ja noch kein sinnvollen tipps dabei. spontan würde ich aber sagen, dass man die abfrage in zwei teile gliedern kann, wenn ich dich richtig verstanden habe. beide abfragen würde ich durch Union verbinden. die datensätze, die durch MATCH..AGAINST ausgeschlossen werden, die lass ich der einfachheit halber weg. berücksichtigt wird nicht, wenn nachrichten den gleichen timestamp haben, was eventuell auch nicht wichtig ist.

die erste abfrage ermittelt die top 2 jedes themas. dazu kann man eine unterabfrage mit einbauen, die sich auf die obere abfrage bezieht. da ist dann aber schon das problem, weil mysql diese erst mit 4.1 unterstützt. die frage ist, ob du sie updaten kannst oder das nicht geht.
die zweite abfrage liefert alle datensätze nach zeit sortiert, die nicht in ersten abfrage vorkommen.

SELECT tab1.id, tab1.thema, tab1.datum
FROM tabelle AS tab1
WHERE tab1.id IN
   (
    SELECT tab2.id
    FROM tabelle AS tab2
    WHERE tab2.thema = tab1.thema
    ORDER BY tab2.datum DESC
    LIMIT 0,2
   )
ORDER BY tab1.thema, tab1.datum

UNION

SELECT tab3.id, tab3.thema, tab3.datum
FROM tabelle AS tab3
ORDER BY tab3.datum

ich bin mir aber nicht sicher, ob ich deine gewünschte sortierung richtig verstanden habe und auch nicht, ob die abfrage fehler ausgibt. falls du nicht auf 4.1 updaten kannst, muss man sich für den ersten teil etwas anderes überlegen....

Ilja