<seufz>
<auchseufz>
Ich zitiere aus dem Handbuch:
To apply ORDER BY or LIMIT to an individual SELECT,
place the clause inside the parentheses that enclose the SELECT:
</seufz>
Was immer das genau heißen mag, ich vermute, ich darf ausschließlich gruppieren, aber nicht limitieren.
War ehrlich gesagt, mein letzter Versuch vor der Kapitulation. Ich hätte mir dann alle Werte in arrays eingelesen und manuell addiert, aber siehe da, folgendes funktioniert tatsächlich:
SELECT
gesamt.ym,
SUM(gesamt.zeit)
FROM (
SELECT FROM_UNIXTIME(JoggingTimestamp, '%Y%|%m') AS ym, SUM(JoggingZeit) AS zeit
FROM Jogging
WHERE UserId ='1'
GROUP BY ym
UNION ALL
SELECT FROM_UNIXTIME(KinoTimestamp, '%Y%|%m') AS ym, SUM(KinoZeit) AS zeit
FROM Kino
WHERE UserID='1'
GROUP BY ym
) gesamt
GROUP BY gesamt.ym DESC LIMIT 12
Nächster Punkt: LIMIT ist hier meiner Meinung nach der falsche Weg. Du möchtest die Daten der letzten 12 Monate. Was ist, wenn Du in einem Monat nicht im Kino warst oder nicht joggen konntest? Deine Abfrage versagt.
Das allerdings ist korrekt!
Ich hätte nämlich dann tatsächlich gerne eine 0 für diesen Monat.
Du solltest den Zeitraum mit einer WHERE-Klausel einschränken, so dass Du auf die 12 gewünschten Monate kommst.
1 Frage: Wie denn? Über where timestamp between...?
2 Frage: Ist das nicht sehr belastend für die db, wenn ich gar kein Limit setze? Weil Limit bedeuted doch, die db hört zu arbeiten auf, wenn sie die 12 fertig hat. Where bedeutet, dass sie immer alle Daten durchforsten muss, selbst wenn klar ist, dass sie keine weiteren Ergebnisse mehr finden kann. Oder?
Grüße und übrigens danke für Deine Hilfe
Franco