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

NOT IN na mesma tabela


alessandro.albuquerque

Pergunta

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.

 

Editado por alessandro.albuquerque
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Pelo que entendi, você quer os registros que não estejam nesta data (NOT IN)

SELECT usuario FROM `inventario` where data='11/01/2018'

Tente assim:

SELECT i1.* 
FROM `inventario` i1
LEFT JOIN (
   SELECT i.usuario 
   FROM `inventario` i 
   WHERE i.data='11/01/2018'
) i2 ON i2.usuario = i1.usuario
WHERE i2.usuario IS NULL

 

Link para o comentário
Compartilhar em outros sites

  • 0

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

 

 

 

 

 

Editado por alessandro.albuquerque
Link para o comentário
Compartilhar em outros sites

  • 0
8 horas atrás, Denis Courcy disse:

Pelo que entendi, você quer os registros que não estejam nesta data (NOT IN)

SELECT usuario FROM `inventario` where data='11/01/2018'

Tente assim:


SELECT i1.* 
FROM `inventario` i1
LEFT JOIN (
   SELECT i.usuario 
   FROM `inventario` i 
   WHERE i.data='11/01/2018'
) i2 ON i2.usuario = i1.usuario
WHERE i2.usuario IS NULL

 

 

 

Pensei em futuramente criar um PHP para da um valor das DATA.

Então fiz isso, mas as colunas ficam duplicadas.

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

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 13/02/2018 at 11:36, alessandro.albuquerque disse:

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

 

 

 

 

 

Ainda não entendi o que você quer.

O campo data em sua tabela é a data do inventário?

Se é a data do inventario,  qual o(s) campo(s) que você quer comparar (status, usuario, centrodecusto,filial)?

A alteração, além de ser por data também é por usuário (como você menciona em seu primeiro post deste tópico)?

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Denis Courcy disse:

Ainda não entendi o que você quer.

O campo data em sua tabela é a data do inventário?

Se é a data do inventario,  qual o(s) campo(s) que você quer comparar (status, usuario, centrodecusto,filial)?

A alteração, além de ser por data também é por usuário (como você menciona em seu primeiro post deste tópico)?

 

A idéia é comparar todas as colunas de acordo com a DATA.

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 87654321 celular positivo p30 in use diego.bordini 561308 br01 11/01/2018
3 12345678 celular positivo p30 in use alessandro.albuquerque 561331 br04 11/03/2018
4 87654321 celular positivo p30 in use carlos.augusto 561308 br02 11/04/2018
                 

Perceba que:

O ativo 12345678 foi alterado a coluna usuário,centrodecusto e fial na data 11/04/2018

O ativo 87654321 foi alterado o centrodecusto na data 11/03/2018.

 

select *
from (SELECT *
      FROM `inventario` WHERE
      data = '$datareferencia') mes1,
     (SELECT *
      FROM `inventario` WHERE
      data = '$dataatual') mes2
where mes1.usuario = mes2.usuario

O código acima vai verificar apenas a alteração da coluna usuário de acordo com a data.


O que não estou consigo é retornar a alteração de qualquer coluna de acordo com a data.
 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...