2014-07-15 3 views
-3
SELECT *, COUNT(`id`) as count 
FROM `visitors` 
WHERE `time` = max(`time`) 
GROUP BY `ip` 
ORDER BY `time` DESC"; 

Ceci est ma requête pour afficher les données de ma table de visiteurs les regroupant par IP mais je veux montrer l'heure la plus récente de cette particualr ip;mysql afficher le plus récent `ip`

Par ex. si cette ip: 145.46.78.241 est ouverte 10 fois je veux montrer le dernier, je veux dire le plus grand timestamp UNIX.

# ip    location    isp       time 

5 79.171.53.96 Tirana, Tirane, AL AS30722 Vodafone Omnitel B.V. 58 minutes ago 
11 46.252.36.216 AL     AS52073 4ALB     2 hours ago 
2 79.171.53.100 Tirana, Tirane, AL AS30722 Vodafone Omnitel B.V. 2 hours ago 

Maintenant pour ex. ip = 79.171.53.96 est ouvert il y a plus de 58 minutes et je veux afficher celui-là pas celui qui est ouvert il y a 58 minutes.

Ma requête ne fonctionne pas et je reçois cette erreur: Fatal error: Call to a member function fetch_assoc() on a non-object

+0

vous ne pouvez pas utiliser 'SELECT * 'avec une clause' group by' si aucune colonne n'est ajoutée. Et un agrégat peut ne pas apparaître dans la clause 'WHERE' mais dans' HAVING' – Horaciux

+0

Il ressemble plus à une erreur PHP. Pouvons-nous vous voir code? –

+0

Est-ce que 'where \' time \ '= max (\' time \ ') ne vous donnera pas 1 rang? La logique semble désactivée, mais cela dépend aussi du type de colonne pour 'time'. – jeroen

Répondre

1
SELECT ip, max(time) as 'Time', count(ip) as '#' 
FROM visitors 
GROUP BY ip 
ORDER BY max(time) DESC 

en plus vous pouvez utiliser

max(location) as 'Location', max(isp) as 'ISP' 

dans SELECT déclaration si nécessaire

+0

Ça a marché! Je vous remercie. – rexhin

Questions connexes