Ich möchte im Mode 4 in der Liste der Datensätze jeweils zusätzlich eine (Zwischen-)Summe ausgeben, so wie in dieser Grafik:

Das Laden und die Sortierung der Datensätze erledigt Contao im Hintergrund mit der Abfrage
Code:
SELECT * FROM tl_tabelle WHERE pid='816' ORDER BY datum DESC LIMIT 0,30
Hinter jedem Datensatz gebe ich die Summe aus. Das erledige ich mit einer einmaligen Abfrage im child_record_callback. Der Querystring sieht so aus:
Code:
SELECT * FROM tl_tabelle WHERE pid='816' ORDER BY datum ASC
Da ich bei der ältesten Buchung anfangen muß, muß ich aufsteigend sortieren und natürlich alle Datensätze laden (und nicht nur 30). Ich addiere danach alle Beträge und schreibe die Zwischensumme in ein Array (mit der Datensatz-ID als Index). Im child_record_callback greife ich auf dieses Array zu und gebe die Zwischensummen aus.

Wenn der Unix-Timestamp in datum bei mehreren Datensätzen aber gleich ist, ist die Reihenfolge bei ASC/DESC jeweils unterschiedlich. Folglich stimmt die Zwischensumme am Ende nicht. Und das kommt dabei heraus:

Die beiden ältesten Datensätze haben denselben Zeitstempel (datum), aber durch DESC rutschte offensichtlich der "zweitälteste" Datensatz an die letzte Stelle und ich habe als Zwischensumme 20 statt 0 zu stehen.

Mein Lösungsansatz wäre nun folgender:
Code:
SELECT * FROM tl_tabelle WHERE pid='816' ORDER BY datum DESC
Ich nehme dieselbe Abfrage, die Contao verwendet, nur ohne LIMIT, weil ich ja die Zwischensummen brauche. Ich müßte das von MySQL zurückgegebene Objekt aber jetzt rückwärts durchlaufen, also nicht so:
PHP-Code:
while($objBuchungen->next())
{

Wie ginge der umgekehrte Weg? Oder gibt es noch eine bessere Lösung?