MySQL - last 2 Months

crazy_chicken

Erfahrenes Mitglied
Hallo Zusammen,

gibt es eine schönere alternative dazu, dass man die Anzahl der bestehenden Datensätze der letzten 2 Monate ausgibt, wobei eine Ausgabe erfolgen soll, wenn für den Monat kein Datensatz vorliegt? -> Soll für die Statistik sein.

Code:
//unvollständig - damit die Idee klar ist.
SELECT * FROM
(
    select
        DATE(NOW()) AS month
    UNION
    select
        DATE_ADD(NOW(), INTERVAL 1 MONTH) AS month
) AS last_2_months
LEFT JOIN
    termin
    ON(termin.start_datum = last_2_months.month)
 
item: "Die letzten 2 Monate"
Dein Code nimmt aber den Aktuellen und den nächsten Monat. Nix mit vergangenheit

item: Warum nimmst du im Union Tage als Werte und nicht Jahr-Monate. So hast du nur Heute um genau diese Uhrzeit und in einem Monat um genau die Uhrzeit. Alle Anderen Tage/Uhrzeiten fallen raus.

SQL:
select *
from (
    select year(now()) as y, month(now()) as m
    union select year(date_add(now(), INTERVAL -1 MONTH)) as y, month(date_add(now(), INTERVAL 1 MONTH)) as m
  ) l
  left join (
    select *, year(start_datum) as y, month(start_datum) as m 
    from termin
  ) t
    on t.y = l.y and t.m = l.m
Oder so
SQL:
select *
from (
    select extract(YEAR_MONTH from now()) as ym
    union select extract(YEAR_MONTH from (date_add(now(), INTERVAL -1 MONTH)) as ym
  ) l
  left join (
    select *, extract (YEAR_MONTH from start_datum) as ym
    from termin
  ) t
    on t.ym = l.ym
 

Neue Beiträge

Zurück