ich schreibe mir einen zimmerplan unter python
jetzt möchte ich eine mysql abfrage starten ob ich überbuche.
und zwar gibt es 3 möglichkeiten
---------------------------------------------------------------
ankunft ----------------- abreise
1.ankunft ------- abreise
2. ankunft --------- abreise
3. ankunft ---- abreise
---------------------------------------------------------------
das problem ist dass ich 3 abfragen unter einem mysql satz starten möchte
p.s die abfrage hat 2 werte (ankunft + abreise)
mysql abfrage
Sorry, mir ist der Sachverhalt nicht klar.
Du hast also eine Tabelle mit den Datumsfeldern "Ankunft" und "Abreise"? Und was möchtest du nun genau Abfragen?
Du hast also eine Tabelle mit den Datumsfeldern "Ankunft" und "Abreise"? Und was möchtest du nun genau Abfragen?

-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi rogen,
hmm nen bisschen mager die Infos, wie schaut die Tabelle aus, in der die Reservierungen (Ankunft/Abreise) gespeichert sind?
Direkt in Python würd ich es wohl so machen:
das schaut nach, ob sich der Reservierungszeitruam mit vorhandenen Reservierungen überschneidet und zählt diese Überschneidungen. "reservierungen" ist eine Liste mit Dictionaries mit den Schlüsseln "ankunft" und "abreise"
Gruß
Dookie
hmm nen bisschen mager die Infos, wie schaut die Tabelle aus, in der die Reservierungen (Ankunft/Abreise) gespeichert sind?
Direkt in Python würd ich es wohl so machen:
Code: Alles auswählen
def Frei(ankunft, abreise, reservierungen):
belegt = 0
for reservierung in reservierungen:
if ( (reservierung["ankunft"] < ankunft < reservierung["abreise"]) and
(reservierung["ankunft"] < abreise < reservierung["abreise"])):
belegt += 1
return belegt
Code: Alles auswählen
reservierungen = [
{"ankunft": (2003,10,20), "abreise": (2003, 10, 23)},
"ankunft": (2003,11,01), "abreise": (2003, 11,07)},
...
]
Gruß
Dookie
Ach, es geht um zeitliche Überschneidungen?
Das ginge mit SQL doch recht leicht, oder?
wobei $Datum für die Variable steht die du auf Konflikte prüfen möchtest. Gibt die Abfrage Einen oder mehr Sätze zurück, gibt es einen Konflikt. Mit SELECT COUNT könntest du sogar die Anzahl der Konflikte rausfinden
Das ginge mit SQL doch recht leicht, oder?
Code: Alles auswählen
SELECT * from Tabelle WHERE Anreise <= $Datum AND $Datum <= Abreise
ja zeitliche überschneidung aber es gibt ja 3 varianten
select * from tabelle WHERE ankunft >= $ankunft and ankunft <= $abreise
select * from tabelle WHERE ankunft <= $ankunft and abreisee >= $abreise
select * from tabelle WHERE abreise >= $ankunft and abreise <= $abreise
die unter einen select satz zusammenfügen ?
select * from tabelle WHERE ankunft >= $ankunft and ankunft <= $abreise
select * from tabelle WHERE ankunft <= $ankunft and abreisee >= $abreise
select * from tabelle WHERE abreise >= $ankunft and abreise <= $abreise
die unter einen select satz zusammenfügen ?
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
ist ja eigentlich keine Pythonfrage, aber verknüpfe doch die Bedingungen.
nicht getestet! aber sollte gehen
Dookie
Code: Alles auswählen
select * from tabelle WHERE ((ankunft >= $ankunft and ankunft <= $abreise) or
(ankunft <= $ankunft and abreise >= $abreise) or
(abreise >= $ankunft and abreise <= $abreise))
Dookie
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
man könnte das auch noch vereinfachen, Indem man überprüft ob nicht $ankunft und $abreise beide vor oder nach dem Eintrag sind.
oder ganz einfach da ankunft immer < abreise
Gruß
Dookie
Code: Alles auswählen
select * from tabelle WHERE not (($ankunft < ankunft and $abreise < ankunft) or ($ankunft > abreise and $abreise > abreise))
Code: Alles auswählen
select * from tabelle WHERE not ($abreise < ankunft or $ankunft > abreise)
Gruß
Dookie
ja das funktioniert
super danke
p.s. ich weiss dass das keine python frage ist
aber ich programmiere zurzeit einen Zimmerplan (hotel)
unter python .
wenn ich fertig bin stelle das projekt vor
super danke
p.s. ich weiss dass das keine python frage ist
aber ich programmiere zurzeit einen Zimmerplan (hotel)
unter python .
wenn ich fertig bin stelle das projekt vor