Ich benötige einen Lösungsansatz bzw. einen Hinweis, wie ich folgende Datenbankabfrage realisieren kann.
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.
PHP-Code:
CREATE TABLE `shop_sts_auftrag_poz_poz` (
`id` int(11) NOT NULL auto_increment,
`person_id` int(11) NOT NULL default '0',
`einsatz_id` int(11) NOT NULL default '0',
`ort_id` int(11) NOT NULL default '0',
`zeitpunkt_von` datetime NOT NULL default '0000-00-00 00:00:00',
`zeitpunkt_bis` datetime NOT NULL default '0000-00-00 00:00:00',
`quelle` int(11) NOT NULL default '0',
`quelle_id` int(11) NOT NULL default '0',
`quelle_sonstige` varchar(255) collate latin1_german1_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=56 ;
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.
Kommentar