Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
No sql abaixo está retornando todos os ips de uma rede local, mas ocorre um erro, existem dois registros com o mesmo ip e quero apenas os registros com a maior data ultima_verificacao
Se no sql o campo ip conter 192.168.1.248 e existir duas tuplas sendo uma com data de ultima_verificacao = 2011-11-30 11:47:06 e a outra = 2011-12-06 11:53:38, o registro que deverá retornar é o com data maior... se eu usar o max, não exibe os campos da data maior, somente a data...
select ip, secretaria, setor, nome, mac, nome_computador, nome_grupo, telefone, ultima_verificacao, inicio_atualizacao, fim_atualizacao, versao_windows, dados
from
(select ea.nome as secretaria, er.nome as setor, ac.ip, ac.mac, ac.nome_computador, ac.nome_grupo, CONCAT( ac.ip, ' - ', ac.nome_computador, ' - ', ac.nome_grupo) as nome, er.telefone, ac.ultima_verificacao, ac.inicio_atualizacao, ac.fim_atualizacao, ac.versao_windows, h.dados from atualizador_computadores ac
left join estrutura_rede er on SUBSTRING_INDEX(er.ip_lan_mk, '.', 3) = SUBSTRING_INDEX(ac.ip, '.', 3)
left join estrutura_adm ea on ea.codigo = er.secretaria
left join atualizador_hardware h on h.mac = ac.mac
where ac.ip <> '' and SUBSTRING_INDEX(ac.ip, '.', 3) <> '192.168.1' and not er.secretaria is null
union all
select ea.nome as secretaria, ac.nome_grupo as setor, ac.ip, ac.mac, ac.nome_computador, ac.nome_grupo, CONCAT( ac.ip, ' - ', ac.nome_computador, ' - ', ac.nome_grupo) as nome,
'' as telefone, ac.ultima_verificacao, ac.inicio_atualizacao, ac.fim_atualizacao, ac.versao_windows, h.dados from atualizador_computadores ac
left join estrutura_rede er on SUBSTRING_INDEX(er.ip_lan_mk, '.', 2) = SUBSTRING_INDEX(ac.ip, '.', 2)
left join estrutura_adm ea on ea.codigo = er.secretaria
left join atualizador_hardware h on h.mac = ac.mac
where ac.ip <> '' and SUBSTRING_INDEX(ac.ip, '.', 3) = '192.168.1' and not er.secretaria is null
) as tabela
group by ip having ultima_verificacao >= SUBDATE( (SELECT MAX(ultima_verificacao) FROM atualizador_computadores), INTERVAL 31 DAY)
order by ip, secretaria asc, setor asc, nome asc
Carregando comentários...