phpbar.de logo

Mailinglisten-Archive

Abfragestruktur - Zeitraum mit unbekanntem Startwert

Abfragestruktur - Zeitraum mit unbekanntem Startwert

Sebastian Mendel lists at sebastianmendel.de
Die Sep 28 11:49:26 CEST 2004


Tim Hildebrandt schrieb:
> Hallo Liste,
> 
> ich habe mal eine Frage zu einer SQL-Query, die ich selbst noch nicht
> hinbekommen habe. Ich habe eine Reihe von Statistikdaten, die einen
> textalischen Index sowie einen Zeitstempel (via PHP-Funktion "time()")
> besitzen. Jetzt kommt es innerhalb eines Zeitintervalls vor, dass einige
> dieser textalischen Indizes meinetwegen einer halben Stunde mehrfach
> auftreten. Diese identischen Indizes möchte ich zeitabhängig herausfinden.
> Jetzt habe ich aber das Problem, dass ich den Startzeitpunkt nicht kenne.
> Damit meine ich, dass die Eingaben der statistischen Daten irgendwann
> begonnen haben und irgendwann auch wieder aufgehört haben und dazwischen
> eine gewisse Zeit verstrichen ist.
> 
> Ich bräuchte also eigentlich eine solche Abfrage:
> 
> "Suche alle Datensätze gruppiert nach meinem Index (nicht Primärindex!), die
> irgendwann erstmalig in der Tabelle vorhanden sind und die dann maximal eine
> halbe Stunde lang nach hinten hin eingegeben wurden"
> 
> Zutreffend könnte sein:
> 
> Index           Zeitstempel       ID
> ----------------------------------------
> xxxxxxxxxxx     N                 349
> xxxxxxxxxxx     N+234             1384
> xxxxxxxxxxx     N+500             2345
> [...]
> xxxxxxxxxxx     N+1800            6937
> ----------------------------------------
> 
> 
> Wobei N eine beliebige Startzeit in der Linux-Epoche ist, aber eben
> unbekannt ist.
> 
> Ziel ist es, dass ich davon ausgehe, dass eine Sitzung während der Eingabe
> eben immer nur 30 Minuten gedauert hat und ich innerhalb dieses Zeitraums
> alle doppelten Keys einfach wegstreichen kann, da diese für mich dann keine
> weitere Relevanz haben. Sprich: Ich verschlange damit die Anzahl der
> Datensätze und lasse immer nur den jeweils ersten gefundenen Key stehen,
> wobei ich alle späteren Keys anhand ihrer jeweiligen Primären ID's
> identifiziere und lösche.

Hole Anfangszeiten
SELECT Index,MIN(Zeitstempel) FROM tab GROUP BY Index

DELETE FROM tab
WHERE Index = [Index]
AND Zeitstempel > Zeitstempel
AND Zeitstempel <= Zeitstempel + 30


das ist nur schematisch, wie das nun genau umsetzt, ob mit 
temp-tabellen, oder subquerys, oder multi-table deletes, oder sonstwas 
ist dir überlassen


-- 
Sebastian Mendel

www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com
www.sf.net/projects/phpdatetime        www.sf.net/projects/phptimesheet

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive