Ir para conteúdo

POWERED BY:

Arquivado

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

Renan Maia

Query

Recommended Posts

Bom dia, desculpe mas não consegui encontrar a solução para a minha dúvida então abri o tópico.

Na verdade não estou sabendo como posso construir uma query. Vou tentar explicar:

Possuo uma tabela de auditoria, onde registra se determinada linha de uma tabela sofreu algum tipo de alteração. Preciso de um select que me retorne de um forma geral todas as linhas que sofreram alguma mudança em um determinado dia. Há alguma função que eu possa usar para analisar essa alteração?

 

Agradeço desde já a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Publique a descrição desta tabela de auditoria com alguns exemplos de dados e de como se quer a saída.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou desconfigurado então estou editando e postando um link para a imagem da tabela. As colunas são respectivamente:

 

ID LAU_ID DATA TIPO

 

 

https://imageshack.com/i/f0EBc7zrj

 

 

 

A tabela é mais ou menos essa. Se você perceber o LAU_ID numero 2914808 possui mais de uma linha, pois ouve outras ocorrências nele. Eu gostaria de fazer um select para mostrar de uma forma geral todos os LAU_ID que tiveram mais de uma ocorrência, e tudo isso em um determinado período, no exemplo a cima é tudo do dia 09/04. Deu para entender melhor?

Desde já agradeço a ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como se sabe qual tabela se vai dar select ?

 

É uma tabela fixa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria isto ?!

select *
from laudohistorico 
where <chave> = '2914808' 

Não sei se entendi o problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Eu preciso selecionar todos os LAU_ID que tem mais de um registro na tabela. Veja o LAU_ID 2917586, ele possui duas linhas porque foi feita alguma alteração neste LAU_ID. São estes que preciso selecionar. Deu pra entender mais ou menos?? haha

Compartilhar este post


Link para o post
Compartilhar em outros sites

EVOLUINDO

SELECT *
FROM TABLE
WHERE LAU_ID IN (select LAU_ID
                 from table
                 group by LAU_ID
                 having count(*) > 1)

mas creio ainda não ter entendido o problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT count(*),
lau_id

FROM sua_tabela

WHERE count(*) > 1
GROUP BY lau_id

 

Dessa forma você terá todos os LAU_ID Que apareçam mais de uma vêz.

 

Se quiser apagar os antigos e manter apenas o mais atual, pode fazer assim

 

DELETE FROM sua_tabela

WHERE lau_id = (

SELECT lau_id,

MAX(data)
FROM sua_tabela

WHERE count(*) > 1

AND data <> MAX(data)
GROUP BY lau_id

)

Qualquer duvida entre em contato

 

:skull: @napalm23zero

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.