Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Prefeitura de Itapema

Retornar apenas a maior data de duas tuplas

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

:nataltongue:

 

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
AND ac.ultima_verificacao = (SELECT max(ultima_verificacao) FROM atualizador_computadores WHERE ip= ac.ip )
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
AND ac.ultima_verificacao = (select max(ultima_verificacao) FROM atualizador_computadores WHERE ip= ac.ip)
) as tabela

group by ip

order by secretaria asc, setor asc, nome asc, ultima_verificacao asc

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.