php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.03.2005, 10:44  
Erfahrener Benutzer
 
Registriert seit: 06.01.2005
Beiträge: 308
hekto
Standard abfrage date // zeitraum

Ich habe folgendes Problem
ich schreibe gerade an einer zimmerverwaltung
in einer tabelle ordne ich alle mieter ein,
die struktur der tabelle ist:
lfdnr int(11) Nein
zimmernr int(11) Nein 0
mietername varchar(30) Nein 0
beginn date Nein 0000-00-00
ende date Nein 0000-00-00
verweisaufzimmer varchar(10) Nein zimmer -> lfd_nr

sql_query("SELECT gebucht.* FROM gebucht
WHERE (
(gebucht.verweisaufzimmer = '".$zeile[0]."' )
AND
( '".$beginnmiete."' BETWEEN gebucht.beginn AND gebucht.ende)
AND
('".$endmiete."' BETWEEN gebucht.beginn and gebucht.ende)
) ");


Das ist das entsprechende select dazu, eigentlich klappt auch alles
ABER
Liegt der gewuenschte Buchungsbeginn vor dem jetzigen belegt DATE und das gewuenschte Buchungsende hinter dem jetzigen Buchungsende, so wird mir das zimmer als frei angezeigt.

Beispiel

buchungs.beginn = 2006-03-01
buchungs.ende = 2006-06-01

gewuenschter beginn 2006-02-01
gewuenschtes ende 2006-06-01

Wie muss ich die Abfrage ändern???
hekto ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.03.2005, 14:00  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

Je nachdem, was Du eigentlich sehen willst, versuch folgendes mal als Ansatz:
Code:
AND
"' . $endmiete . '" > gebucht.beginn
AND
"' . $beginnmiete . '" < gebucht.ende
tapferesschneiderlein ist offline   Mit Zitat antworten
Alt 11.03.2005, 14:34  
Erfahrener Benutzer
 
Registriert seit: 06.01.2005
Beiträge: 308
hekto
Standard

Sehen möchte ich alle zimmer die ich im bereich
buchungs.beginn und buchungs.ende wirklich frei habe
__________________
Gruß
Hekto
hekto ist offline   Mit Zitat antworten
Alt 11.03.2005, 14:55  
Erfahrener Benutzer
 
Registriert seit: 06.01.2005
Beiträge: 308
hekto
Standard

Um meine Frage vielleicht nochmal zu verdeutlichen
es gibt eine tabelle mit zimmer und die haben ein gebucht.beginn und gebucht.ende

Jetzt erhalte ich per Form einen gewünschten Reservierungszeitraum:

jetzt will ich checken welche Zimmer frei sind

Select * from GEBUCHT
where reservierungsbeginn nicht im Zeitraum gebucht.beginn bis gebucht.ende
reservierungsende nicht im Zeitraum gebucht.beginn bis gebucht.ende
reservierungsbeginn bis reservierungsende nicht den zeitraum gebucht.beginn bis gebucht.ende einschliesst


Zur Zeit sieht die Abfrage so aus:
sql_query("SELECT gebucht.* FROM gebucht
WHERE (
(gebucht.verweisaufzimmer = '".$zeile[0]."' )
AND
( '".$beginnmiete."' BETWEEN gebucht.beginn AND gebucht.ende)
AND
('".$endmiete."' BETWEEN gebucht.beginn and gebucht.ende)
) ");

Aber diese Abfrage überprüft eben nicht, wenn der gewünschte Reservierungszeitraum größer ist....


Hoffe mir kann einer auf die Sprünge helfen
__________________
Gruß
Hekto
hekto ist offline   Mit Zitat antworten
Alt 12.03.2005, 13:56  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

Na, dann (ohne daß ich jetzt weiter drüber nachgedacht habe) negiere meine Bedingung einfach:
Code:
// sinngemäß:
SELECT feld
FROM gebucht
WHERE NOT ( miete.beginn < gebucht.ende AND miete.ende > gebucht.beginn)
tapferesschneiderlein ist offline   Mit Zitat antworten
Alt 12.03.2005, 16:03  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Verknüpfe halt deine Bedingungen mit OR und es sollte klappen:
Code:
...
AND
(( '$beginnmiete' BETWEEN gebucht.beginn AND gebucht.ende)
OR
('$endmiete' BETWEEN gebucht.beginn and gebucht.ende)
))"...
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 12.03.2005, 21:49  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

Hey, lazydog, damit sind die Fälle, in denen Anfrage-Beginn vor Belegt-Beginn, aber Anfrage-Ende nach Belegt-Ende liegen, doch nicht abgedeckt, oder?

Ich erinnere an http://www.phpfriend.de/forum/viewto...ydog+hat+recht
tapferesschneiderlein ist offline   Mit Zitat antworten
Alt 12.03.2005, 22:46  
Gast
 
Beiträge: n/a
Standard Termin - Überschneidungen

Vielleicht nach diesem Muster?
Code:
-----------------------------------------------------------------
...........B************E............ bereits festgelegter Termin
...A=======Z............^............ T1
...A=======^=====Z......^............ T2
...A=======^============Z............ T3
...A=======^============^========Z... T4
...........A============Z............ T5
...........A============^========Z... T6
...........^..A=====Z...^............ T7
...........^.....A======^========Z... T8
...........^............A========Z... T9

-----------------------------------------------------------------
Überlappungen suchen:
WHERE
(
   (B between A and Z)    /* für T1 bis T6  */
   OR
   (A betwenn B and E)    /* für T5 bis T9  */
)
mfg ~dilemma~
  Mit Zitat antworten
Alt 12.03.2005, 23:04  
Erfahrener Benutzer
 
Registriert seit: 06.01.2005
Beiträge: 308
hekto
Standard

ich bekam jetzt schon den hinweis, es so zu versuchen
SELECT gebucht.*
FROM gebucht
WHERE gebucht.verweisaufzimmer = '".$zeile[0]."' )
AND -- Buchungen mit Anfang oder/und Ende innerhalb START/END
( gebucht.beginn
BETWEEN [START]
AND [END]
AND gebucht.ende[END]
BETWEEN [START]
AND [END]
)
OR -- Buchungen Anfang kleiner und Ende größer als START/END
( gebucht.beginn < [START]
AND gebucht.ende > [END]
)

aber ist dort nicht der fehler das erste AND...
die beiden between sind ja klar... so ganz stimmt das immer noch nicht
hekto ist offline   Mit Zitat antworten
Alt 13.03.2005, 02:27  
Gast
 
Beiträge: n/a
Standard

Freie Zimmer:
Code:
SELECT ... 
WHERE ... 
  AND 
  ( NOT ($anreise BETWEEN zimmer_belegt_von AND zimmer_belegt_bis) 
    AND 
  NOT  ($abreise BETWEEN zimmer_belegt_von AND zimmer_belegt_bis))
Weder Anreise- noch Abreisetag lieger innerhalb einer Zimmerbelegung

belegte Zimmer:
Code:
SELECT ... 
WHERE ... 
  AND 
  (($anreise BETWEEN zimmer_belegt_von AND zimmer_belegt_bis) 
    OR 
  ($abreise BETWEEN zimmer_belegt_von AND zimmer_belegt_bis))
An- oder Abreisetag liegen innerhalb einer Zimmerbelegung

Wichtiger Hinweis:
in Hotels ist es üblich, daß die Zimmer am Abreisetag bis 8/9 Uhr geräumt sind, damit sie gereinigt und ggf. am selben Tag für die nächste Übernachtung zur Verfügung stehen können.

Berücksichtige daher die Uhrzeit mit. Beispiel
Anreise 14:00
Abreise 08:00

Sonst gilt ein Zimmer am Abreisetag fälschlicherweise noch bis zum nächsten Tag als belegt.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
Einfach Datepicker gesucht Cyberbob_at_tot PHP Tipps 2007 5 14.11.2005 09:10
abfrage begrenzen Cyrus Datenbanken 4 26.10.2005 11:29
[Erledigt] Termine mit und ohne einen Zeitraum ausgeben Datenbanken 2 18.10.2005 13:24
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Auswertung über einen bestimmten Zeitraum boehseronkel Datenbanken 2 20.07.2005 10:50
Abfrage in array? BartTheDevil89 Datenbanken 5 10.05.2005 14:21
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
statt javascript new Date(); lieber mit php date PHP Tipps 2005 5 27.02.2005 16:55
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
[Erledigt] SQL Abfrage funzt nicht Datenbanken 2 04.02.2005 11:09
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10
2 Tabellen 1 Abfrage nilsfeld Datenbanken 6 11.08.2004 11:18
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php date zeitraum, datenbank zeitraum, mysql zeitraum abfragen, select abfrage zeitraum, php datum zeitraum, mysql zeitraum, php innerhalb zeitraum, php abfrage zeitraum, php datum in zeitraum, abfrage date, sql auswertung zeiträume bedingungen, datenbanken zeiträume, php zimmerbelegung, datenbanken zeitraum, php zeitraum abfragen, datenbank zeitraum abfragen, mysql abfrage freier zeitraum, http://www.php.de/datenbanken/19410-abfrage-date-zeitraum.html, datum in zeitraum php, php zeiträume überschneidungen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.