Vinzenz Mai: mysql Addieren von 2 Ergebnissmengen möglich?

Beitrag lesen

Hallo,

wo ist die GROUP-BY-Klausel?
wo ist die GROUP-BY-Klausel?
Da ist sie da. Warum entfernst Du diese in Deinen beiden Abfragen, die Du per UNION verknüpfst?

Das hatte ich ursprünglich nicht, aber

<seufz>
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>

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 DESC LIMIT 12

)

UNION ALL

(

SELECT FROM_UNIXTIME(KinoTimestamp, '%Y%|%m') AS ym, SUM(KinoZeit) AS zeit
FROM Kino
WHERE UserID='1'
GROUP BY ym DESC LIMIT 12

)

) gesamt
GROUP BY gesamt.ym DESC LIMIT 12


> > b) Fasse die beiden Ergebnisse in \*einer\* Ergebnismenge zusammen: UNION  
>   
> So wie oben gemacht??  
  
nein, natürlich nicht. Du versuchst Dich bereits an Schritt c)  
  
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. Du solltest den Zeitraum mit einer WHERE-Klausel einschränken, so dass Du auf die 12 gewünschten Monate kommst.  
  
  
Freundliche Grüße  
  
Vinzenz