Gast freescale Geschrieben 31. Mai 2010 Teilen Geschrieben 31. Mai 2010 (bearbeitet) Hallo Community ich hab' mal wieder ein Problem mit einer MySQL-Query... In einer Tabelle mit u.a. den Feldern DateBegin und DateEnd (Start- & Enddatum einer Veranstaltung) möchte ich alle Einträge suchen, welche beispielsweise im Juli 2010 stattfinden - auch diese, welche z.B. im Februar beginnen und im August enden. Anschließend möchte ich - gruppiert nach dem entsprechendem Tag im Monat - anzeigen, wie viele Veranstaltungen an diesem Tag stattfinden. Meine aktuelle Query lautet bisher... (ich denke, das ist soweit ganz selbsterklärend) SELECT DateBegin Datum, COUNT(*) Anzahl FROM Festivals WHERE DateBegin BETWEEN "2010-07-01" AND LAST_DAY("2010-07-01") # Beginnen in diesem Monat OR DateEnd BETWEEN "2010-07-01" AND LAST_DAY("2010-07-01") # Enden in diesem Monat OR "2010-07-01" BETWEEN DateBegin AND DateEnd # Beginnen vor und enden ausserhalb dieses Monats GROUP BY Datum ORDER BY Datum (ein DateBegin LIKE "2010-07-%" habe ich vermieden, da der Auswahl-Bereich später unter Umständen dynamisch änderbar sein soll) ... alternative WHERE-Klausel nach dieser Idee ... (finde ich aber noch weniger übersichtlich) [...] WHERE ("2010-07-01" BETWEEN DateBegin AND DateEnd OR LAST_DAY("2010-07-01") BETWEEN DateBegin AND DateEnd) OR ("2010-07-01" < DateBegin AND LAST_DAY("2010-07-01") > DateEnd) [...] Meine Probleme dabei: 1) Eine Veranstaltung, die z.B. am 02. Juli beginnt und am 08. Juli endet, wird nur am 02. Juli im Feld "Anzahl" berücksichtigt. Wie kann ich mehrtägige Veranstaltungen an jeweils allen entsprechenden Tagen mitzählen lassen? :confused: 2) Quasi ein "Unterproblem" von 1) ... Beginnt die Veranstaltung außerhalb des angegebenen Monats, liegt das Ergebnis-Feld "Datum" außerhalb des zuläässigen Bereichs 3) Da ich aus der Ergebnisliste (in PHP) eine Art "Kalenderblatt" erstellen möchte, sollen auch Tage "ohne Veranstaltungen" angezeigt werden. Wie bekomme ich das hin? 4) (eher weniger wichtig) Geht die Datumsauswahl eleganter? Ich finde die zwei Möglichkeiten für die WHERE-Bedingungen prinzipiell eigentlich eher ziemlich umständlich... Bevor ich aus Verzweiflung noch eine Tabelle "Jahr-Monat-Tag" anlege und die auf die Query JOINe ... hat vielleicht einer von euch eine bessere Idee? Viele Grüße, freescale Bearbeitet 31. Mai 2010 von freescale Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.