Ordenar corretamente registros com GROUP BY
Tenho a seguinte query:
select usermac.nome, signallog.datetime
FROM usermac, signallog
WHERE usermac.mac=signallog.mac
ORDER BY usermac.nome ASC, signallog.datetime DESC
Que Resulta:
nome datetime
4jnp 2011-03-15 20:20:10
4jnp 2011-03-15 20:10:12
4jnp 2011-03-15 20:00:10
4jnp 2011-03-15 18:20:10
4jnp 2011-03-15 18:10:11
4jnp 2011-03-15 18:00:14
4jnp 2011-03-15 17:50:17
4jnp 2011-03-15 17:40:19
4jnp 2011-03-15 17:30:15
abadiobanananp 2011-03-16 08:00:09
abadiobanananp 2011-03-16 07:50:07
abadiobanananp 2011-03-16 07:40:07
abadiobanananp 2011-03-16 07:30:06
abadiobanananp 2011-03-16 07:20:06
abadiobanananp 2011-03-16 07:10:06
abadiobanananp 2011-03-16 07:00:07
Até aqui tudo bem, porém preciso agrupar estes registros com GROUP BY para aparecer apenas 1 (um) usuário e o último DATETIME.
Fica assim:
select usermac.nome, signallog.datetime
FROM usermac, signallog
WHERE usermac.mac=signallog.mac
GROUP BY usermac.nome
ORDER BY usermac.nome ASC, signallog.datetime DESC
Resulta:
nome datetime
4jnp 2011-03-15 17:30:15
abadiobanananp 2011-03-14 21:46:42
O datetime que retorna é o mais antigo e não o mais atual.
Preciso deste tipo de resultado:
nome datetime
4jnp 2011-03-15 20:20:10
abadiobanananp 2011-03-16 08:00:09
Se alguém tiver uma idéia de como montar a query SQL para resultar assim, ficarei muito grato!
Re: Ordenar corretamente registros com GROUP BY
Tenta assim
select usermac.nome, MAX(signallog.datetime)
FROM usermac, signallog
WHERE usermac.mac=signallog.mac
GROUP BY usermac.nome
ORDER BY usermac.nome ASC
Re: Ordenar corretamente registros com GROUP BY
Maxwell, obrigado pela dica!
Eu consegui de outra forma, usando SubQueries, dessa forma:
SELECT *
FROM (
SELECT usermac.nome, usermac.mac, signallog.datetime
FROM usermac, signallog
WHERE usermac.mac = signallog.mac
ORDER BY signallog.datetime DESC
)s2
GROUP BY s2.nome
ORDER BY s2.nome ASC
No mais, agradeço a atenção.