dedlfix: Problem mit MySQL-Abfrage

Beitrag lesen

Tach!

Die Tabelle hat drei Felder "jahr", "monat" und "dauer", [...] Die Felder sind vom Typ "VARCHAR", was die Sache womöglich noch etwas erschwert. "dauer" gibt die Anzahl in Monaten an.

Ja, Varchar ist Mist, weil du die Dauer zum Monat hinzurechnen must und beim Jahreswechsel ein Problem bekommst. Mit Datumswerten wäre das kein Problem, weil MySQL Intervalle hinzurechnen kann.

Meinm Problem ist, ich möchte aber auch die Einträge finden, die sich überschneiden, also wo zwar Jahr und Monat vor dem Bereich liegen, aber durch die Dauer in den Bereich hineinragen. Also soll die Abfrage auch den Eintrag jahr=2015, monat=11, dauer=6 finden.

Wie müsste der Select aussehen?

Das ist erst die letzte zu klärende Frage. Davor kommt noch, wie du das Ende auf das Nicht-Datum addieren möchtest. Du kannst zwar temporär ein Datum erzeugen, da das Intervall hinzufügen und dann wieder einen String draus machen, um mit deinen Varchars zu vergleichen, aber schön geht anders. Der Vergleich ist daran noch das einfachste, es muss Anfang oder Ende (oder beides => normales OR kein XOR) im Bereich von $beginn und $ende liegen.

dedlfix.