Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Selecionar os usuarios data > 15 dias de inatividade


andersoncaetano

Pergunta

Caros amigos, só me restou pedir ajuda, é oo seguinte.

Tenho um tabla usuarios e uma tabela historico

preciso selecionar todos os usuarios cuja ultima data do historico é maior do que 15 dias, estou tentando o seguinte:

SELECT

usuarios.cod_usuario,

usuarios.nome_usuario,

usuarios.id_responsavel,

historico.`data`

FROM

usuarios

INNER JOIN historico ON usuarios.cod_usuario = historico.id_usuario AND historico.`data` < DATE_SUB(NOW(), INTERVAL 15 DAY)AND historico.id_responsavel = 142

isso me retorna os usuários com mais de 15 dias de inatividade no histórico, mas retorna todos os usuários repetidos cujo hostorico.data é > que 15 dias, e eu só preciso do ultimo, registro que esteja inativo a mais de 15 dias de cada usuário.

Preciso urgentemente de uma solução.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

'andersoncaetano'

O primeiro passo é isolar o problema.

Buscar do histórico os últimos registros de cada usuário cuja data seja menor que 15 dias

SELECT id_usuario, max(`data`) as `data` 
FROM historico
WHERE id_responsavel = 142 AND`data` < DATE_SUB(NOW(), INTERVAL 15 DAY) 
GROUP BY id_usuario
Segundo, apos o teste acima ter obtido o efeito desejado, é usá-lo para obter os dados do usuário
SELECT u.cod_usuario, u.nome_usuario, u.id_responsavel, h.`data`
FROM usuarios
INNER JOIN (
   SELECT id_usuario, max(`data`) as `data` 
   FROM historico
   WHERE id_responsavel = 142 AND`data` < DATE_SUB(NOW(), INTERVAL 15 DAY) 
   GROUP BY id_usuario
) h ON h.id_usuario = u.cod_usuario

Link para o comentário
Compartilhar em outros sites

  • 0
'andersoncaetano'

O primeiro passo é isolar o problema.

Buscar do histórico os últimos registros de cada usuário cuja data seja menor que 15 dias

SELECT id_usuario, max(`data`) as `data` 
FROM historico
WHERE id_responsavel = 142 AND`data` < DATE_SUB(NOW(), INTERVAL 15 DAY) 
GROUP BY id_usuario
Segundo, apos o teste acima ter obtido o efeito desejado, é usá-lo para obter os dados do usuário
SELECT u.cod_usuario, u.nome_usuario, u.id_responsavel, h.`data`
FROM usuarios
INNER JOIN (
   SELECT id_usuario, max(`data`) as `data` 
   FROM historico
   WHERE id_responsavel = 142 AND`data` < DATE_SUB(NOW(), INTERVAL 15 DAY) 
   GROUP BY id_usuario
) h ON h.id_usuario = u.cod_usuario

Muito Obrigado Denis, matou a pau de primeira,

Retornou exatamente o que eu estava precisando.

A gente sofre quando ta começando.

Valeu mesmo.

Editado por Denis Courcy
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...