2011-06-08 3 views
2

J'ai une table appelée «trafic» que j'utilise pour connecter les visiteurs du site.obtenir les derniers visiteurs sur le site

Chaque page vue est enregistrée, donc j'ai plusieurs entrées par adresse IP.

J'ai besoin de récupérer la dernière visite groupée par adresse IP. Comment puis-je faire ceci?

Colonnes: id (autoinc), ipaddress (varchar), lastActivity (datetime)

+0

1. Êtes-vous sûr que cela est légal? 2. L'adresse IP ne peut pas être couplée au visiteur. 3. 'SELECT ipaddress FROM trafic ORDER BY lastActivity DESC LIMIT 1;' –

Répondre

-1
Select * from traffic GROUP BY ipaddress ORDER BY lastActivity DESC 
+1

dans l'ordre de la requête ci-dessus par travaillera sur le résultat groupé. donc cela ne retourne pas le résultat souhaité –

+0

Cela ne fonctionne-t-il pas? –

+1

Ne fonctionne pas. M. Singh a raison. Je veux juste la "dernière" visite de chaque iPad. La requête ci-dessus les regroupe simplement dans un ordre aléatoire, puis applique l'ordre après. – Jason

1
select f.ipaddress , f.lastActivity 
from (
    select ipaddress , max(lastActivity) as maxdate 
    from traffic group by ipaddress) as x 
    inner join traffic as f 
    on f.ipaddress = x.ipaddress and f.lastActivity= x.maxdate; 
+0

Super! Je vous remercie. Malheureusement, je ne peux pas voter comme je suis un nouveau membre. Mais merci beaucoup! – Jason

+0

Wow cette requête est si f * cked ... Vous joignez le trafic de table au trafic de table ????? –

+0

@Bondye Joindre une table à elle-même est une technique très utile. Voir http://en.wikipedia.org/wiki/Join_%28SQL%29#Self-join –

Questions connexes