Ir para conteúdo
Alessandro Almeida

NOT IN na mesma tabela

Recommended Posts

Pessoal,

Eu preciso exibir as linhas que  houveram alguma alteração de acordo com a DATA.

Segue o código:

SELECT * FROM `inventario` WHERE usuario NOT IN (SELECT usuario FROM `inventario` where data='11/01/2018')

Obs:  Se houver alteração em algum campo de outra coluna não irá exibir. Como posso acrescentar nesse código que exibe qualquer  alteração?

id ativo tipodeativo marcamodelo status usuario centrodecusto filial data
1 12345678 celular positivo p30 in use alessandro.albuquerque 561308 br04 11/01/2018
2 12344321 celular positivo p30 in use diego.bordini 561308 br01 11/01/2018
3 43211234 celular positivo p30 in use alisson.brito 561308 brn1 11/01/2018
9 87654321 celular positivo p30 in use alessandro.albuquerque 561308 br04 11/01/2018
4 12345678 celular positivo p30 in use carlos.augusto 561308 br04 11/02/2018
5 12344321 celular positivo p30 in use diego.bordini 561308 br01 11/02/2018
6 43211234 celular positivo p30 in use alisson.brito 561308 brn1 11/02/2018
7 87654321 celular positivo p30 in use alessandro.albuquerque 561331 br04 11/02/2018

No exemplo acima, o usuário alessandro.abuquerque mudou o Centro de Custo e exibiu apenas a mudança de usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe. Eu não formulei a pergunta corretamente. Deve ter sido o exaustão.

 

Vou explicar o conceito dessa consulta:

 1. Existe um inventário mensal com todos os ativos

 2. As colunas são id,ativo,tipodeativo,marcamodelo,status,usuario,centrodecusto,filial,data

 3. Estou no terceiro mês ou subsequente a ele(quarto, quinto sexto etc...)

 

Como irei consultar a diferença do último inventário, ou seja, a diferença das últimas duas datas?

 

exemplo:

id ativo tipodeativo marcamodelo status usuario centrodecusto filial data
1 12345678 celular positivo p30 in use alessandro.albuquerque 561308 br04 11/01/2018
2 12345678 celular positivo p30 in use diego.bordini 561308 br01 11/02/2018
3 12345678 celular positivo p30 in use alisson.brito 561308 brn1 11/03/2018
4 12345678 celular positivo p30 in use alessandro.albuquerque 561341 br04 11/04/2018
5 12345678 celular positivo p30 in use carlos.augusto 561308 br02 11/05/2018

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentou criar duas tabela virtuais por select e fazer um join explicito

 

algo como

 

select *
from (SELECT *
      FROM `inventario`
      data = '11/01/2018') mes1,
     (SELECT *
      FROM `inventario`
      data = '11/02/2018') mes2
where mes1.usuario = mes2.usuario

refinando a questão da data (último dia)

 

mas grosso modo seria isto

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Motta disse:

Tentou criar duas tabela virtuais por select e fazer um join explicito

 

algo como

 


select *
from (SELECT *
      FROM `inventario`
      data = '11/01/2018') mes1,
     (SELECT *
      FROM `inventario`
      data = '11/02/2018') mes2
where mes1.usuario = mes2.usuario

refinando a questão da data (último dia)

 

mas grosso modo seria isto

 

Acho que estou enferrujado em MYSQL.

Não consegui encaixar JOIN nesse código.

Eu conseguir encaixar um WHERE mas duplicou as colunas.

select *
from (SELECT *
      FROM `inventario` WHERE
      data = '11/01/2018') mes1,
     (SELECT * WHERE
      FROM `inventario`
      data = '11/02/2018') mes2
where mes1.usuario = mes2.usuario

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O join já está aí , as colunas não duplicaram , são de dois meses.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

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