mysql query auf gültigkeit

g110b

Grünschnabel
Hallo zusammen !

In meiner mysql-DB sind Flyer (z.B. Saturn-Flyer 2008-01-19) mit einem Ausgabedatum & einem Gültigkeitsdatum gespeichert, wobei das Gültigkeitsdatum auch leer sein darf.

id | flyer | ausgabedatum | gültigkeitsdatum
1 | saturn | 2009-01-27 | 2009-02-01
2 | mm | 2009-01-01 | 2009-03-31
3 | euronics | 2009-01-05 | NULL
...
...

SELECT count(id) as cnt, flyer, date_format(ausgabedatum, '%m/%Y') as period
FROM table
GROUP BY flyer, date_format(ausgabedatum, '%m/%Y')

Diese Abfrage gruppiert mir die Flyer pro Monat bzgl. des Ausgabedatums.


Nun zu meinem Problem:

Der Flyer 1 ist über 2 Monate und der Flyer 2 über 3 Monate gültig.
Kann mir jemand sagen, wie ich es bewerkstelligen kann, dass die Abfrage ALLE Monate berücksichtigt, die zwischen dem Ausgabedatum & dem Gültigkeitsdatum liegen (wobei das Gültigkeitsdatum auch leer sein darf) ?

Ausgabe sollte dann folgendermassen aussehen:
1 | saturn | 2009-01
1 | saturn | 2009-02
1 | mm | 2009-01
1 | mm | 2009-02
1 | mm | 2009-02
1 | euronics | 2009-01

Ich bin für jede Hilfe dankbar ! . Danke ....
 
ich weiss leider nicht genau, was du damit meinst .. aber ich versuche es mal so zu erklären ..

id | flyer | ausgabedatum | gültigkeitsdatum
1 | saturn | 2009-01-27 | 2009-02-01

wenn ich die abfrage auf das ausgabedatum (Y-m) gruppiere, erhalte ich folgendes:
1 | saturn | 2009-01

da Saturn aber das ausgabedatum 2009-01 und das gültigkeitsdatum 2009-02 besitzt, ist dieser record für ZWEI MONATE gültig... sozusagen VON .. BIS.

daher möchte ich folgendes erhalten:
1 | saturn | 2009-01
1 | saturn | 2009-02

vielen dank !
 
Also, alleine mit Standard-SQL ist das nicht möglich. Vielleicht bietet MySQL irgendwas an, um alle Monate in einem bestimmten Intervall aufzuzählen; ansonsten kannst du auf jeden Fall eine Stored Procedure dafür schreiben.
 
Vielen Dank für Deine Hilfe & schnelle Antwort !

Dann werde ich mich mal in die "Stored Procedure" einzulesen - damit hatte ich bisweilen relativ wenig zu tun ..

Danke nochmal,
Gruss Georg
 
Zurück