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

(Resolvido) Atualizar dados de um campo de uma tabela conforme campo de outra tabela


vinyipa

Pergunta

Boa tarde Pessoal !!!
Estou começando ainda a me aventurar com programação em php e bd mysql. É o seguinte tenho um sistema de vendas em php onde criei um novo campo na tabela de clientes onde ficará armazenado a data da ultima venda realizada para esse cliente, agora preciso pegar essa informação de um campo de uma outra tabela que seria a tabela de atendimentos. O problema é que nessa tabela podem ter vários atendimentos para os clientes, então preciso pegar apenas a data do ultimo atendimento com venda para cada cliente correspondente da tabela de cliente. Alguém consegue me orientar com algum script para tal necessidade???

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 1

Tente assim, ajustando o código abaixo as suas necessidades.

update clientes c
inner join (select idcliente, max(dt_ultimavenda) as dt_ultimavenda
            from atendimentos 
            where vendeu = 1
            group by idcliente
           ) a on a.idclente = c.idcliente
set c.dt_ultimavenda = a.dt_ultimavenda
where c.dt_ultimavenda < a.dt_ultimavenda
                                         

 

Link para o comentário
Compartilhar em outros sites

  • 0
17 horas atrás, vinyipa disse:

O problema é que nessa tabela podem ter vários atendimentos para os clientes, então preciso pegar apenas a data do ultimo atendimento com venda para cada cliente correspondente da tabela de cliente.

Para pegar a data do último atendimento você tem algumas opções.

1 - se a tabela de atendimentos tem um id único, basta selecionar  max(IdAtendimento) WHERE idCliente = xxx. Onde xxx é o id do cliente que você quer. Isto te dará o atendimento mais atual para este cliente.

2 - ainda seguindo a primeira opção você pode fazer um select buscando o campo idAtendimento WHERE idCliente = xxx order by idAtendimento limit 1. que retornará somente um registro dentro do filtro que você deseja.

3 buscando pela data de atendimento, da mesma forma das opções acima, desde que a data de atendimento seja do tipo datetime.

Link para o comentário
Compartilhar em outros sites

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

Para pegar a data do último atendimento você tem algumas opções.

1 - se a tabela de atendimentos tem um id único, basta selecionar  max(IdAtendimento) WHERE idCliente = xxx. Onde xxx é o id do cliente que você quer. Isto te dará o atendimento mais atual para este cliente.

2 - ainda seguindo a primeira opção você pode fazer um select buscando o campo idAtendimento WHERE idCliente = xxx order by idAtendimento limit 1. que retornará somente um registro dentro do filtro que você deseja.

3 buscando pela data de atendimento, da mesma forma das opções acima, desde que a data de atendimento seja do tipo datetime.

Denis, obrigado pela ajuda.

A questão é que preciso alterar esse campo em toda minha base de clientes, não apenas em um, e no caso tem mais uma condição para pegar essa data, o atendimento tem que ter sido "com venda", já que o campo que estou buscando é a data da última venda para este cliente. Na minha tabela de atendimentos tem um campo chamado "vendeu" onde 0 é para não e 1 é para sim.

Então teria que rodar um script que busque essas condições usando como referencia o id do cliente na tabela de clientes e na tabela de de atendimentos onde o id também é informado, atualizando o campo "dt_ultimavenda" da tabela de clientes em todos os clientes onde tiverem tido venda na tabela de atendimento.

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

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

Tente assim, ajustando o código abaixo as suas necessidades.


update clientes c
inner join (select idcliente, max(dt_ultimavenda) as dt_ultimavenda
            from atendimentos 
            where vendeu = 1
            group by idcliente
           ) a on a.idclente = c.idcliente
set c.dt_ultimavenda = a.dt_ultimavenda
where c.dt_ultimavenda < a.dt_ultimavenda
                                         

 

Funcionou perfeitamente Denis, muito obrigado meu nobre!

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...