Moin,
ich arbeite gerade an einem kleinen Buchungsportal für Ferienwohnungen. Die Wohnungen haben Saisonpreise, die ich in einer Tabelle abgelegt habe. Aufbau der Tabelle:
id(int)|anreise(date)|abreise(date)|Preis(int)|wohnung(int)
Für eine Funktion preis_berechnen verzweifel ich an einer SQL-Anfrage, die mir optimaler weise direkt die Summe in Euro für eine Buchungsanfrage für einen bestimmten Zeitraum liefert oder zumindest alle betreffenden Saisonpreise innerhalb des Zeitraums liefert. Ich habe das bisher nur mit zwei SQL-queries lösen können:
SELECT *
FROM preise
WHERE CAST( '$anreise' AS DATE )
BETWEEN CAST(anreise AS DATE )
AND CAST(abreise AS DATE )
AND wohnung =$wohnung
OR CAST( '$abreise' AS DATE )
BETWEEN CAST(anreise AS DATE )
AND CAST(abreise AS DATE )
AND wohnung =$wohnung
Damit bekomme ich den ersten und den letzten relevanten Saisonpreise-Zeitraum geliefert.
Ich mache dann eine Fallunterscheidung in PHP, ob die Buchung nicht vielleicht sogar in einem Zeitraum liegt und kann für diesen Fall den Preis direkt berechnen.
Für den Fall, dass die Buchung sich über mehr als einen Saisonzeitraum erstreckt, brauche ich eine weitere SQL-Anfrage:
SELECT *
FROM preise
WHERE anreise
BETWEEN CAST( '$eins' AS DATE )
AND CAST( '$zwei' AS DATE )
AND wohnung =$wohnung
$eins ist das erste relevante Anreisedatum einer Saisonzeit, die in den Buchungszeitraum fällt,
$zwei das letzte relevante Anreisedatum einer Saisonzeit, die in den Buchungszeitraum fällt.
Damit bekomme ich alle relevanten Saisonzeiten für die Buchung und kann den Preis mehr oder weniger umständlich in PHP berechnen.
Ich bin mir absolut sicher, dass man das auch irgendwie in SQL lösen könnte, ist mir aber zu komplex. Vielleicht gibt es hier ja einen SQL-Guru der mir helfen kann.
ich arbeite gerade an einem kleinen Buchungsportal für Ferienwohnungen. Die Wohnungen haben Saisonpreise, die ich in einer Tabelle abgelegt habe. Aufbau der Tabelle:
id(int)|anreise(date)|abreise(date)|Preis(int)|wohnung(int)
Für eine Funktion preis_berechnen verzweifel ich an einer SQL-Anfrage, die mir optimaler weise direkt die Summe in Euro für eine Buchungsanfrage für einen bestimmten Zeitraum liefert oder zumindest alle betreffenden Saisonpreise innerhalb des Zeitraums liefert. Ich habe das bisher nur mit zwei SQL-queries lösen können:
SELECT *
FROM preise
WHERE CAST( '$anreise' AS DATE )
BETWEEN CAST(anreise AS DATE )
AND CAST(abreise AS DATE )
AND wohnung =$wohnung
OR CAST( '$abreise' AS DATE )
BETWEEN CAST(anreise AS DATE )
AND CAST(abreise AS DATE )
AND wohnung =$wohnung
Damit bekomme ich den ersten und den letzten relevanten Saisonpreise-Zeitraum geliefert.
Ich mache dann eine Fallunterscheidung in PHP, ob die Buchung nicht vielleicht sogar in einem Zeitraum liegt und kann für diesen Fall den Preis direkt berechnen.
Für den Fall, dass die Buchung sich über mehr als einen Saisonzeitraum erstreckt, brauche ich eine weitere SQL-Anfrage:
SELECT *
FROM preise
WHERE anreise
BETWEEN CAST( '$eins' AS DATE )
AND CAST( '$zwei' AS DATE )
AND wohnung =$wohnung
$eins ist das erste relevante Anreisedatum einer Saisonzeit, die in den Buchungszeitraum fällt,
$zwei das letzte relevante Anreisedatum einer Saisonzeit, die in den Buchungszeitraum fällt.
Damit bekomme ich alle relevanten Saisonzeiten für die Buchung und kann den Preis mehr oder weniger umständlich in PHP berechnen.
Ich bin mir absolut sicher, dass man das auch irgendwie in SQL lösen könnte, ist mir aber zu komplex. Vielleicht gibt es hier ja einen SQL-Guru der mir helfen kann.
Zuletzt bearbeitet: