Hilfe bei SQL-SELECT

Major

Erfahrenes Mitglied
Hi,
ich habe eine MySQL Tabelle in der Logdaten gespeichert werden. Bei jedem Seitenaufruf auf meiner HP werden vom User die IP, die Zeit (als Linux-Timestamp) und die aktuelle Seite gespeichert. Jetzt will ich eine Online-Fuktionalität aufbauen und dazu wissen wo sich der User gerade befindet, ich will also mit einem SELECT-Befehl alle IP'S der letzten 3 Minuten mit den dazugehörigen Seiten und Zeiten. Also wenn die IP 172.123.45.32 vier Einträge in den letzten 3 Minuten hat, will ich nur den letzten und das von allen IP's die in den letzten 3 Minuten was gemacht haben.

Die Tabelle heißt : logs und die Felder: IP, Seite, Zeit

Kann mir jemand das zugehörige SELECT austüffteln?

Danke und Gruß
Major
 
versuche es mal mit

SELECT * FROM logs WHERE (Zeit-3Min) GROUP BY IP

(Zeit-3Min) musst Du noch auf den Linuxtimestamp anpassen. Ist das nicht möglich, füge noch ein Feld time mit getdate() ein und werte diese aus.

so long
CP
 
das wars nicht

Hi,

leider bekomme ich damit noch nicht das richtige Ergebnis, weil ich will ja nicht die Einträge vor genau 3 Minuten sondern alle seit 3 Minuten (Zeit > (timestamp-180)) und davon nur die neuesten. Wenn ich die Abfrage so mache:

SELECT * FROM logs WHERE Zeit > (timestamp-3Min) GROUP BY IP

bekomme ich zwar die IP's, aber nicht die richtige (letzte) Zeit dazu.

Gruß
Major
 
Hallo,
das Problem hört sich einfach an, es ist aber recht tricky, den Feldinhalt eines bestimmten Datensatzes aus einer GROUP BY-Gruppe auszuspucken. Man muss MySQL ziemlich austricksen. Das könnte vielleicht so funktionieren:
Code:
SELECT
 ip,
 SUBSTRING(MAX(CONCAT(RPAD(zeit, 12, ' '), seite)) ,13) AS seite,
 MAX(zeit) AS zeit
FROM
  logs
WHERE
  zeit >= DATE_SUB(NOW(), INTERVAL 3 MINUTE)
GROUP BY
  ip
Ist ein wildes Konstrukt. Die Formel verkettet den Timestamp mit der Spalte die ausgelesen werden soll, liefert den höchsten Wert dieser Verkettung und kappt dann den Timestamp wieder weg.

Vielleicht hilft's ja.

Grüße,
Martin
 
Zuletzt bearbeitet:
Danke

Danke Dir Martin,

genau das war es, ist echt tricky :-)
Ich hatte schon einen halben Tag damit verbracht, bis ich mich an die Foren wandte. Also nochmals herzlichen Dank und ein Bienchen an Dich.

Gruß
Major
 

Neue Beiträge

Zurück