php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.02.2009, 12:53  
Erfahrener Benutzer
 
Registriert seit: 19.01.2009
Beiträge: 106
Rene befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Mysql Abfrage in ... schön? ;)

Tach zusammen... Also Problem ist mal wieder wiefolgt:

tbl_preise:

ID | iZuObj | dVon | dBis |flPreis | iVerfuegbar
1 | 1 |2009-01-04 |2009-03-28 |50.00 | 1
2 | 1 |2009-03-28 |2009-06-27 |55.00 | 1
3 | 1 |2009-06-27 |2009-08-29 |60.00 | 1
4 | 2 |2009-01-04 |2009-03-28 |40.00 | 1


So.. Nun will ich die Datensätze raussuchen, die am 2009-01-10 Anfangen (ID 1) und am 2009-08-15 Enden (ID 3) und die die dazwischen liegen (in dem fall ID2 ).

Derzeitige Abfrage (die zwar funktioniert aber nicht wirklich schön ist) sieht wiefolgt aus:

Code:
SELECT * 
FROM tbl_preise 
WHERE iZuObj=1 
AND ('2009-01-10 ' BETWEEN dVon AND dBis) 
OR ('2009-08-15' BETWEEN dVon AND dBis) 
OR (dBis <= '2009-08-15')
Ne idee wie das schöner geht ?
Rene ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.02.2009, 16:18  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Dein Satz ist mehrdeutig, du möchtest alle Einträge die genau in einen Zeitraum fallen oder die einen Zeitraum zumindest schneiden?
Chriz ist offline  
Alt 18.02.2009, 16:31  
Erfahrener Benutzer
 
Registriert seit: 19.01.2009
Beiträge: 106
Rene befindet sich auf einem aufstrebenden Ast
Standard

ich möchte Sowohl den Datensatz der den '2009-01-10' enthällt (bzw schneidet), als auch den Datensatz der den '2009-08-15' (bzw schneidet) enthält, als auch die datensätze die Dazwischen liegen.


oder einfacher:
ich will im genannten Beispiel die Datensätze: 1,2 und 3 finden.

Als suchkriterien hab ich aber nur dVon:2009-01-10 und dBis :2009-08-15
Rene ist offline  
Alt 18.02.2009, 16:38  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Auch geschnittene Zeiträume:
WHERE (dVon BETWEEN '2009-01-10' AND '2009-08-15') OR (dBis BETWEEN '2009-01-10' AND '2009-08-15')

Nur Zeiträume innerhalb der Angabe:
WHERE (dVon BETWEEN '2009-01-10' AND '2009-08-15') AND (dBis BETWEEN '2009-01-10' AND '2009-08-15')

Anführungszeichen nicht vergessen, sonst rechnet MySQL Und sowas vermeiden:
Zitat:
'2009-01-10 '
(das Leerzeichen)
Chriz ist offline  
Alt 18.02.2009, 16:44  
Erfahrener Benutzer
 
Registriert seit: 19.01.2009
Beiträge: 106
Rene befindet sich auf einem aufstrebenden Ast
Standard

Jo dann fehlen aber die Zeiträume "Dazwischen"... das isses ja in dem fall würde ja Datensatz mit der ID 2 nicht gefunden da dieser ja "übergangen" wird, also nicht "Angeschnitten" ist.... hmmmm...


Weiterhin kommt dann das Problem auf, wenn ich mich nur einem "Bereich" bewege Z.B.

will ich diese spalte hier haben :
1 | 1 |2009-01-04 |2009-03-28 |50.00 | 1

dann währe das ja:
WHERE (dVon BETWEEN '2009-01-14' AND '2009-01-20') OR (dBis BETWEEN '2009-01-14' AND '2009-01-20')

Gefunden aber 0.
ich raffs net....

Geändert von Rene (18.02.2009 um 17:03 Uhr).
Rene ist offline  
Alt 18.02.2009, 17:41  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Achso stimmt. Ja so schwer ist es ja nicht. Bei BETWEEN testest du ja 3 Punkte ab, ist X zwischen Y und Z? Jetzt musst du halt das Szenario abdecken, dass ein Datensatz über beide Enden des angegebenen Zeitraums läuft.

$von / $bis sei dein gesuchter Zeitraum

Also nochmal:
dVon im gesuchten Zeitraum -> (dVon BETWEEN $von AND $bis) -> Datensatzzeitraum beginnt im gesuchten Zeitraum
dBis im gesuchten Zeitraum -> (dBis BETWEEN $von AND $bis) -> Datensatzzeitraum endet im gesuchten Zeitraum
$von im Datensatzzeitraum -> ($von BETWEEN dVon AND dBis) -> gesuchter Zeitraum beginnt im gesuchten Datensatzzeitraum
$bis im Datensatzzeitraum -> ($bis BETWEEN dVon AND dBis) -> gesuchter Zeitraum endet im gesuchten Datensatzzeitraum

Alles verodern und du solltest jetzt alles abgedeckt haben. Wobei der letzte glaube ich überflüssig ist.
Chriz ist offline  
Alt 19.02.2009, 08:42  
Erfahrener Benutzer
 
Registriert seit: 19.01.2009
Beiträge: 106
Rene befindet sich auf einem aufstrebenden Ast
Standard

hmmm dann versuch ich das mal so.. dachte ich komm um sone 2 Meter abfrage vlt drumherum
Danke
Rene ist offline  
Alt 19.02.2009, 14:20  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ist doch nicht so schlimm ..
Chriz ist offline  
 


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
MySQL Abfrage Problem mit Where parti02 Datenbanken 14 23.10.2008 14:52
MySQL Abfrage als PHP class d3rbastl3r PHP Tipps 2008 2 11.06.2008 15:41
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
MySQL Abfrage von Ver. 5 für Ver 3. des MySQL Servers FireFIghter Datenbanken 3 02.02.2007 17:18
Datum bezogene mysql abfrage ApfeL Datenbanken 5 22.10.2006 16:03
MySQL Abfrage macht Seite langsam Datenbanken 11 19.10.2006 19:38
MySQL Abfrage Von / Bis andrew22 Datenbanken 1 02.10.2006 11:04
MySQL - Abfrage: Unterschiedliche Ergebnisse aus PHP/manuell horstenpeter Datenbanken 3 16.07.2006 13:22
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
mysql abfrage mqs PHP Tipps 2006 4 09.04.2006 17:57
Abfrage bei mySQL 4 ApfeL Datenbanken 5 24.03.2006 18:53
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
einfache mysql abfrage und mysql update haut nicht ganz hin djrace PHP Tipps 2005-2 6 12.08.2005 15:28
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
alle datesätze die einen zeitraum schneiden php, mysql werte abfragen innerhalb eines zeitraums beetwin

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:19 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