Between funktion in MySQL

Alt 30.03.2012, 12:02   # 1
mckay
 
Registriert seit: 26.03.2012
Beiträge: 11
Hallo,

wie kann man die BETWEEN funktion noch optimieren?

Es handelt sich um ein Programm das für einen Zeitraum mit Hilfe von Tagespreisen aus einer DB einen gesammtpreis errechnen soll.
Dabei handelt es sich um übernachtungspreise, wem es hilft.

z.B. vom 01-01-2012 bis 02-01-2012 = 55 EURO

PHP-Code:
$anfrage_Raten mysql_query("SELECT BAR FROM raten_2012 WHERE Datum BETWEEN '$An_Datum' AND '$Ab_Datum'") or die ("Abfrage ungültig."); 
Damit frage ich alle Datensätze ab die zwischen An und Abreisetag liegen weil ich gerne die preise addieren möchte um die kosten für den angegebenen Zeitraum zu berechnen.

Das Problem ist:

Bei: 01-01-2012 bis 02-01-2012 gibt er mir den wert für die Übernachtung vom 31.12.2011 bis 01.01.2012 sprich er gibt mir nur den Tagespreis vom abreisetag will aber den vom Anreisetag bis (ausschließlich Abreisetag)

Ist das verständlich??? Kann jemand helfen?

---------- Doppelpost zusammengeführt ----------

Gibt es nicht die möglichkeit das ganze einen Tag nach hinten zu schieben??? z.B. BETWEEN AnTag -1 AND AbTag -1
  Mit Zitat antworten
Alt 30.03.2012, 12:02 # --
netzwelt.de
 
Benutzerbild von netzwelt.de
 
 
 
   
Alt 30.03.2012, 13:50   # 2
Arthur Spooner
Halb Mensch, halb Admin
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 4.108
Hallo,

lass das BETWEEN weg und arbeite mit Vergleichen:

PHP-Code:
$anfrage_Raten mysql_query("SELECT BAR FROM raten_2012 WHERE (Datum >= '$An_Datum') AND (Datum <= '$Ab_Datum')") or die ("Abfrage ungültig."); 
So müsstest du die gesamte Übernachtungsdauer erhalten.

Wenn du die Kosten auch noch addieren möchtest, dann frage BAR mit einem SUM() ab. Also so: SELECT SUM(BAR) FROM ...

Viele Grüße
  Mit Zitat antworten
Alt 30.03.2012, 13:53   # 3
Arthur Spooner
Halb Mensch, halb Admin
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 4.108
Ach ja, ich würde noch einen Index auf "Datum" legen, damit die Abfrage flotter läuft. Das macht sich vielleicht im Moment nicht bemerkbar aber mit steigender Anzahl an Datensätzen werden die Abfragen, ohne Key, langsamer. Auch wenn das bei so einer simplen Abfrage eigentlich überschaubar ist, würde ich es mitnehmen.
  Mit Zitat antworten
Alt 03.04.2012, 09:53   # 4
mckay
Threadstarter
 
Registriert seit: 26.03.2012
Beiträge: 11
Danke für eure Hilfe... habe jetzt einen Weg gefunden

PHP-Code:
$anfrage_Raten mysql_query("SELECT BAR FROM raten_2012 WHERE Datum BETWEEN SUBDATE('$An_Datum', 1) AND SUBDATE('$Ab_Datum', 1)") or die ("Abfrage ungültig."); 
  Mit Zitat antworten

Alt 20.06.2013, 08:37 # --
News Flash
 
Benutzerbild von News Flash
 
 
 
   
Alt 20.06.2013, 08:37 # --
netzwelt.de
 
Benutzerbild von netzwelt.de
 
 
 
   
Antwort
Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 08:37 Uhr.