Hi,
Das ist die Variante des INSERT, mit dem man mit einem Statement mehrere Datensätze anlegen kann.
INSERT table (month) VALUES (1), (2), ...
Alles klar. Ich hatte die ganze Zeit einen kleinen Denkfejhler, weil ich dachte, Du wolltest tatsächlich die Zahlen 1-12 hineinschreiben. Das geht wohl, aber nicht in meinem Fall, da ich rükwirkend auch über einen Jahreswechsel hinweg die Zahlen haben möchte.
Nun, ein Left Join liefert von der linken Tabelle alle Datensätze, auch wenn in der rechten keine Entsprechung gemäß der Join-Bedingung existiert. Da heißt, du bekommst garantiert deine 12 Datensätze (aus der linken temporären Tabelle mit den Zahlen von 1 bis 12), auch wenn sich keine Monatsdaten finden lassen.
Korrekt. Mein Problem ist leider, dass mein Vergleichswert der "rechten Tabelle" sich so gar nicht vergleichen lassen will.
ON t.Monat = (und hier steht mein FROM_UNIXTIME-Konstrukt), wobei ich nicht sicher weiß, ob ich da nicht einen Syntaxfehler eingebaut habe.
Ich bekomme nämlich nur die Monate angezeigt, die Daten beinhalten:
Aus einer Test-db:
SELECT t.Monat, COUNT(m.TestID) AS count
FROM tmp t
LEFT JOIN meinetabelle m
ON t.Monat = FROM_UNIXTIME(m.Timestamp, '%Y%|%m')
WHERE...
GROUP BY t.Monat DESC
Tabelle tmp:
1-2010|09
2-2010|08
3-2010|07
4-2010|06
...
Und zum 2. Teil des Problems:
Die Query:
SELECT ID,
CASE Multi
WHEN 'ja'
THEN 1
WHEN 'nein'
THEN 0
WHEN 'NULL'
THEN 0
END FROM ausgaben
wandelt meine NULL-Werte nicht um.
Danke für Deine Geduld übrigens.
Gruß, Frank