[MySQL 4.0]Nur jeweils aktuellsten Timestamp selektieren
Mahlzeit,
ich habe eine Tabelle in der folgenden Form vorliegen:
IP - Richtung - Timestamp - Bytes
Als DB kommt MySQL 4.0.18 zum Einsatz.
Hier werden IPs mitsamt ein- bzw. ausgehendem Traffic sowie einem Timestamp reingepumpt.
Nun möchte ich gerne in einer Abfrage ein- und ausgehenden Traffic abfragen, aber jeweils nur vom AKTUELLSTEN Timestamp. Da verschiedenste IPs eingetragen werden, ist dieser auch nicht immer für alle IPs gleich, sondern kann sich um bis zu 3 Minuten unterscheiden.
Dazu kommt, dass diese IPs natürlich mehrfach auftauchen, da alle paar Minuten von jeder IP der Traffic eingetragen wird.
Was ich also am Ende gerne als Ergebnis haben möchte sieht so aus:
Krieg ich aber nicht gebacken. Das beste Ergebnis, das ich bisher habe ist, dass ich einfach stur nach "NOW()-x" filtere, da sieht das Ergebnis ber total verkackt aus, etwa so:
Sprich, für mich unbrauchbar.
Ich könnte nun einfach mit meiner Abfrage leben, ein großzügiges x nehmen (z.B. minus 5 Minuten) und dann innerhalb meines Programm durchgehen, ob die aktuell bearbeitete IP den aktuellsten Timestamp hat und falls ja alle anderen Einträge mit gleicher IP und älterem Timestamp löschen, aber ich bin der festen Überzeugung, dass das, was ich will auch direkt mit SQL möglich ist.
Ich habe nur leider keine Ahnung wie, da ich bisher mit Datenbanken nicht viel am Hut hatte
Wenn also jemand eine Idee hat, vielen lieben Dank, ich lausche artig
Gruß,
Trench
Mahlzeit,
ich habe eine Tabelle in der folgenden Form vorliegen:
IP - Richtung - Timestamp - Bytes
Als DB kommt MySQL 4.0.18 zum Einsatz.
Hier werden IPs mitsamt ein- bzw. ausgehendem Traffic sowie einem Timestamp reingepumpt.
Nun möchte ich gerne in einer Abfrage ein- und ausgehenden Traffic abfragen, aber jeweils nur vom AKTUELLSTEN Timestamp. Da verschiedenste IPs eingetragen werden, ist dieser auch nicht immer für alle IPs gleich, sondern kann sich um bis zu 3 Minuten unterscheiden.
Dazu kommt, dass diese IPs natürlich mehrfach auftauchen, da alle paar Minuten von jeder IP der Traffic eingetragen wird.
Was ich also am Ende gerne als Ergebnis haben möchte sieht so aus:
Code:
IP1 - In - AktuellsterTimestamp - GroßeZahl
IP1 - Out - AktuellsterTimestamp - GroßeZahl
IP2 - In - AktuellsterTimestamp - GroßeZahl
IP2 - Out - AktuellsterTimestamp - GroßeZahl
.
.
.
IPn - In - AktuellsterTimestamp - GroßeZahl
IPn - Out - AktuellsterTimestamp - GroßeZahl
Krieg ich aber nicht gebacken. Das beste Ergebnis, das ich bisher habe ist, dass ich einfach stur nach "NOW()-x" filtere, da sieht das Ergebnis ber total verkackt aus, etwa so:
Code:
IP1 - In - AktuellsterTimestamp - GroßeZahl
IP1 - Out - AktuellsterTimestamp - GroßeZahl
IP1 - Out - Timestamp - GroßeZahl
IP1 - In - Timestamp - GroßeZahl
IP2 - In - AktuellsterTimestamp - GroßeZahl
IP2 - In - Timestamp - GroßeZahl
IP2 - Out - AktuellsterTimestamp - GroßeZahl
.
.
.
IPn - Out - AktuellsterTimestamp - GroßeZahl
IPn - In - AktuellsterTimestamp - GroßeZahl
IPn - Out - Timestamp - GroßeZahl
Sprich, für mich unbrauchbar.
Ich könnte nun einfach mit meiner Abfrage leben, ein großzügiges x nehmen (z.B. minus 5 Minuten) und dann innerhalb meines Programm durchgehen, ob die aktuell bearbeitete IP den aktuellsten Timestamp hat und falls ja alle anderen Einträge mit gleicher IP und älterem Timestamp löschen, aber ich bin der festen Überzeugung, dass das, was ich will auch direkt mit SQL möglich ist.
Ich habe nur leider keine Ahnung wie, da ich bisher mit Datenbanken nicht viel am Hut hatte
Wenn also jemand eine Idee hat, vielen lieben Dank, ich lausche artig
Gruß,
Trench
Zuletzt bearbeitet: