Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Layoutprobleme? - Styleswitcher!

Antwort
 
Themen-Optionen
Alt 21.02.2008, 01:32 Nach oben    #1
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 469
Standard Überschneidung von zwei timestamps

Hallo, folgendes Problem:

Ich hab eine Tabelle, in der ein Startdatum und ein Endddatum angegeben sind. Wenn jetzt ein neuer Eintrag gemacht wird, soll geprüft werden ob der neue Eintrag sich nicht mit einem der anderen überschneidet. Die zeiträume müssen dafür beachtet werden. Also einmal prüfen ob das neue Startdatum NIE zwischen einem Start- und einem dazugehörigen Enddatum liegt. Und dann noch für das Enddatum. Wenn beides nicht zutrifft ist ok.
Wie muss dafür der/die Query/s aussehen? Steh irgendwie grad aufm Schlauch.
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2008, 02:40 Nach oben    #2
robo47
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.049
Standard

Code:
SELECT
    * 
FROM 
    termine 
WHERE 
   ( startTermin   >  neuerTerminStart  AND 
     startTermin   <  neuerTerminEnde )
    OR
   ( endeTermin   >  neuerTerminStart  AND 
     endeTermin   <  neuerTerminEnde )
ungetestet aber kurz zur Erklärung, man muss ja eigentlich nur schauen ob es für die zutrifft:

( der neue-Start-Punkt zwischen dem Start-Punkt UND
dem Endpunkt liegt )
ODER
( der neue-End-Punkt zwischen dem Start-Punkt UND
dem End-Punkt liegt )
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2008, 09:02 Nach oben    #3
Jann Hendrik
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 1.550
Standard

between dürfte auch helfen:
http://dev.mysql.com/doc/refman/5.1/...html#id3224196
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

die aktuelle Umfrage: Wo kauft ihr eure Literatur?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2008, 09:36 Nach oben    #4
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 469
Standard

BETWEEN wollte nicht so wie ich.
Ich werde mal das von robo47 ausprobieren.

//edit:
Klappt leider nicht. Was ist daran falsch?
PHP-Code:
    $ankunft mktime(0,0,0,$_POST['ankunft_monat'],$_POST['ankunft_tag'],$_POST['ankunft_jahr']);
    
$abflug mktime(0,0,0,$_POST['abflug_monat'],$_POST['abflug_tag'],$_POST['abflug_jahr']);

    
$query $db->query("SELECT
                            *
                        FROM 
                            "
.TABLE_PREFIX."liste
                        WHERE 
                        ( ankunft   >=  $ankunft  AND 
                            ankunft   <=  $abflug )
                            OR
                        ( abflug   >=  $ankunft  AND 
                            abflug   <=  $abflug )"
);
    
$number $db->num_rows($query);
    if(
$number != $error[] = "Sie sind zu diesem Zeitpunkt schon unterwegs"
Die schon vorhandenen Daten waren:
ankunft abflug
1203548400 1487631600

Eingetragen wurde daher falscher weise:
1235170800 1298242800

//edit:
Auch diese Version klappt nicht:
PHP-Code:
    while($result $db->fetch_array($query))
    {
        
$number++;
    } 
Wenn ich den Query direkt über phpMyAdmin ausführe bekomme ich den betreffenden Datensatz, allerdings zeigt er mir folgendes an:
Zeige Datensätze 0 - 0 (1 insgesamt, die Abfrage dauerte 0.0240 sek.)
Aber warum funktioniert die zweite Variante dann nicht? Bin irgendwie total verwirrt!
Zudem zeigt er mir den Query so an:
Code:
SELECT * 
FROM mybb_liste
WHERE (
ankunft & gt;

 =1266708800 AND ankunft & lt;

 =1392938200
) OR (
abflug & gt;

 =1266708800 AND abflug & lt;

 =1392938200
) LIMIT 0 , 30
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz

Geändert von Jan (21.02.2008 um 10:04 Uhr).
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

« datenausgabe nach datum sortiert ??? | MySQL: Frage zu Stored Procedures »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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 anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:39 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.6.7, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44