MYSQL: Abfrage nach timestamp und Id Limit?!

Grunge

Erfahrenes Mitglied
Hey und sorry für den Titel - aber ich wusste nicht wie ich es besser beschreiben sollte..

In einer MYSQL-Datenbank versuche ich gerade eine Abfrage zu starten und ich hänge da an einer Stelle. Ich bin mit den Syntaxen von MYSQL echt nicht so vertraut.

Es soll auf einer Profilseite die letzten Besucher angezeigt werden. Allerdings nur dann, wenn der Besuch vor 12 Stunden oder weniger stattgefunden hat. Ob das jetzt die eleganteste Lösung ist weiß ich nicht, Gegenvorschläge werden gerne angenommen. Jedenfalls löse ich das so:

Code:
SELECT * FROM fl_lastvisitors WHERE vis_id = '".$_GET['uid']."' AND (TIMEDIFF(CURRENT_TIMESTAMP,vis_date)) < '12:00:00' ORDER BY vis_date DESC LIMIT 5

Jetzt zeigt er mir natürlich, wenn ein User 10 mal innerhalb von 12 Std auf das Profil klickt nur diesen einen User an. Wie schaffe ich es, dass die Zeitdifferenz nur auf jeden einzelnen Besucher bezogen wird.

Hoffe ihr habt es verstanden ;) :confused:

LG
 
Ich formatiere dein SQL mal, damit man das Ding auch lesen kann. Zeilenumbrüche und Tabs helfen.
SQL:
SELECT * 
FROM fl_lastvisitors 
WHERE vis_id = '".$_GET['uid']."' 
    AND (TIMEDIFF(CURRENT_TIMESTAMP,vis_date)) < '12:00:00' 
ORDER BY vis_date DESC LIMIT 5
Bau noch ein GROUP BY ein. Hier allgemeiner Code, muss für MYSQL ev noch angepasst werden. vis_field_x ist das einfach mal ein Platzhalter für weitere Felder
SQL:
SELECT vis_id, MAX(vis_date), vis_feld_x
FROM fl_lastvisitors 
WHERE vis_id = '".$_GET['uid']."' 
GROUP BY vis_id, vis_feld_x
HAVING (TIMEDIFF(CURRENT_TIMESTAMP, MAX(vis_date))) < '12:00:00' 
ORDER BY vis_date DESC LIMIT 5

Ansonsten rate ich dir mal dieses Tutorial anzuschauen [SQL] Aktuelle Einträge pro Gruppe auslesen [Yaslaw.Info]
 

Neue Beiträge

Zurück