Zum Inhalt springen

MySQL | Termin liegt im angegebenen Monat


Gast freescale

Empfohlene Beiträge

Gast freescale

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 von freescale
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...