MySQL Abfrage Between zwei Datumsfeldern
KlausP
- datenbank
Guten Morgen,
ich brauche bitte mal einen Tipp von euch:
Ich habe eine Tabelle für einen Belegungsplan (id, anreise (date), abreise (date)).
Beispiel für einen Datensatz:
id = 1
anreise = 2014-07-09
abreise = 2014-07-31
Nun möchte ich beim Eintragen neuer Buchungen eine Überschneidung vermeiden und Frage daher wie folgt die DB ab:
SELECT id FROM `tabelle` WHERE (`anreise` BETWEEN '2014-07-09' AND '2014-07-31') || (`abreise` BETWEEN '2014-07-09' AND '2014-07-31')
Wenn ein Datensatz gefunden wird breche ich den INSERT ab und gebe eine Fehlermeldung aus.
Das Problem ist, dass z.B. der 2014-07-31 ein Abreisetag ist, aber auch ein Anreisetag sein kann. Gleiches gilt z.B. auch für den 2014-08-10:
id = 1
anreise = 2014-07-31
abreise = 2014-08-10
Nur die Tage "zwischen" dem Anreisetag und dem Abreisetag können keine An- und Abreisetage sein.
Hat jemand eine Idee wie ich meine "Sicherheitsabfrage" erwidern/umstellen muss?
Vielen Dank, Klaus
Hello,
SELECT id FROM `tabelle`
WHERE (`anreise` BETWEEN '2014-07-09' AND '2014-07-31')
|| (`abreise` BETWEEN '2014-07-09' AND '2014-07-31')
Was willst Du denn nun eigentlich wissen?
-------------------- ist verboten
-------------------
---------------- --------------------- ist erlaubt
Wenn es das ist, steig bitte mal ins Archiv. Das Thema wurde hier schon behandelt.
Suche: "Belegungsplan"
Ein Treffer zum Einsieg: http://forum.de.selfhtml.org/archiv/2010/11/t201483/#m1359261
Musst dann den Links im Thread in die Vergangenheit folgen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Das Problem ist, dass z.B. der 2014-07-31 ein Abreisetag ist, aber auch ein Anreisetag sein kann.
Das löst du indem du bei den Vergleichen die Gleichheit von Anreisetag der einen Buchung mit dem Abreisetag der anderen erlaubst.
Nur die Tage "zwischen" dem Anreisetag und dem Abreisetag können keine An- und Abreisetage sein.
Stimmt. Ist aber völlig egal :-) Es geht ja nicht drum wie die Tage heißen sondern dass zwischen den beiden Tagen keine andere Buchung liegt.
Mals dir auf. Ich komme auf 6 Konstallationen wie die An/Abreise einer Buchung mit einem Vergleichszeitraum liegen kann.
Diese Fällt musst du abprüfen. Einfacher wäre es wahrscheinlich wenn du die beiden ok Fälle nimmst und davon dann "NICHT" bildest.