Zeitraum - Zeitraum

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeitraum - Zeitraum

    Ich benötige einen Lösungsansatz bzw. einen Hinweis, wie ich folgende Datenbankabfrage realisieren kann.
    PHP-Code:
    CREATE TABLE `shop_sts_auftrag_poz_poz` (
      `
    idint(11NOT NULL auto_increment,
      `
    person_idint(11NOT NULL default '0',
      `
    einsatz_idint(11NOT NULL default '0',
      `
    ort_idint(11NOT NULL default '0',
      `
    zeitpunkt_vondatetime NOT NULL default '0000-00-00 00:00:00',
      `
    zeitpunkt_bisdatetime NOT NULL default '0000-00-00 00:00:00',
      `
    quelleint(11NOT NULL default '0',
      `
    quelle_idint(11NOT NULL default '0',
      `
    quelle_sonstigevarchar(255collate latin1_german1_ci NOT NULL default '',
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=56 
    In der o.a. Tabelle sind die Zeitpunkte _von und _bis abgelegt, die zeigen sollen, wann eine Person wo gewesen ist. Der Zeitraum für den Aufenthaltsort wird damit definiert.

    Nun kann eine Person auch nur kurz an einem Ort gewesen sein, dann bleibt der Wert _bis leer, also 0000-00-00 00:00:00.

    Nun soll u.a. eine Analyse sein, dass ich wissen möchte, wo sich die Personen im definierten Zeitraum, Bsp. 01.01.2005 00:00:01 bis 01.01.2005 01:00:00 aufgehalten haben. Dabei sollen aber nur die Datensätze erfasst werden, die diesen Zeitraum umfassen. Wenn, also ein Datensatz außerhalb dieses Zeitraumes definiert ist, dann soll dieser nicht erfasst werden.

    Mein Problem ist nun, wenn eine Person z.B. ab 31.12.2004 23:00:00 bis 01.01.2005 05:00:00 an dem Ort gewesen ist, dann muss der Datensatz mit ausgelesen werden, da der Datensatz in den definierten abgefragten Zeitraum fällt.

    Kann man dies mit einer Datenbankabfrage lösen oder benötigt man mehrere Datenbankabfragen. Ich sehe momentan nur eine Möglichkeit mit mehreren Abfragen, dann werden aber manche Datensätze doppelt gefunden und ich muss diese dann erneut nach doppelten Datensätzen filtern - richtig?

    Ich wäre über einen Lösungsansatz oder eine Richtung dankbar.

  • #2
    Hallo Daniel1975
    Der Thread gehört eigentlich zum SQL...


    where zeitpunkt_von>=DatumVon zeitpunkt_bis<=DatumBis

    Nun kann eine Person auch nur kurz an einem Ort gewesen sein, dann bleibt der Wert _bis leer, also 0000-00-00 00:00:00.
    Warum das? Nur Kurz bedeutet doch zeitpunkt_von=zeitpunkt_bis

    Kommentar


    • #3
      Warum das? Nur Kurz bedeutet doch zeitpunkt_von=zeitpunkt_bis
      OK, dass kann man auch erfassen, dass dann Wert von und Wert bis gleich sind, dass werde ich so übernehmen.
      where zeitpunkt_von>=DatumVon zeitpunkt_bis<=DatumBis
      Die Abfrage erfasst aber nicht, dass von mir angeführte Beispiel, weil da z.B. zeitpunkt_von < DatumVon ist.

      Meine Lösung - ? - geht dass, oder ist das ein falscher Ansatz?
      PHP-Code:
      ...WHERE 
      (zeitpunkt_von BETWEEN 'DatumVon' AND 'DatumBis') OR
      (
      zeitpunkt_bis BETWEEN 'DatumVon' AND 'DatumBis') OR
      (
      zeitpunkt_von 'DatumVon' AND zeitpunkt_bis 'DatumBis')... 

      Kommentar

      Lädt...
      X