Clipper On Line • Ver Tópico - Problema no MySQL????

Problema no MySQL????

Discussão sobre SQL

Moderador: Moderadores

 

Problema no MySQL????

Mensagempor JoséQuintas » 11 Jun 2021 19:29

Não sei dizer se é problema do MySQL, ou se era esperado o comportamento.
O comando é mais complexo, aqui uma "redução".

UPDATE JPITEM
SET SALDO =0 ;

UPDATE JPITEM
LEFT JOIN JPESTOQUE ON jpitem.idProduto = jpestoque.esProduto
SET SALDO = SALDO + jpestoque.qtde


Isso estava causando diferenças.

Alterei pra:

UPDATE JPITEM
INNER JOIN
   ( SELECT ESPRODUTO, SUM( JPESTOQUE.ESQTDE ) AS SOMA
    FROM JPESTOQUE
   GROUP BY ESPRODUTO ) AS B
INNER JOIN ON JPITEM.IDPRODUTO = B.ESPRODUTO
SET
   SALDO = B.SOMA


Ao invés de ir gravando/somando a cada lançamento, somei os lançamentos e gravei direto o total.

Nota: já comecei a usar INNER JOIN, num caso como esse o INNER JOIN pode evitar problemas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema no MySQL????

Mensagempor Poka » 12 Jun 2021 10:04

Bom dia à todos.

Quintas, só pra ver se estou entendendo, quando vc quer mostrar um saldo de um determinado dia , faz a soma de tudo? entrada e saida?

Eu gravo numa ficha de estoque como uma conta corrente a cada lançamento, quando quero o saldo de um determinado dia é só pegar o saldo do dia.

Ou estou entendendo errado.

Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 514
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

Problema no MySQL????

Mensagempor JoséQuintas » 12 Jun 2021 11:52

Poka escreveu:Quintas, só pra ver se estou entendendo, quando vc quer mostrar um saldo de um determinado dia , faz a soma de tudo? entrada e saida?
Eu gravo numa ficha de estoque como uma conta corrente a cada lançamento, quando quero o saldo de um determinado dia é só pegar o saldo do dia.
Ou estou entendendo errado.


É isso mesmo.
Por isso vai demorar cada vez mais.
O saldo final está sempre disponível.
Uma coisa que já vi, mais comum, é partir do saldo final e fazer a conta para trás.

E já percebi que vai ficar mais fácil se separar os saldos, para o MySQL.
Tenho a opção de vários depósitos, e QTD1,QTD2,QTD3...9 acaba complicando mais do que se fosse deposito, qtd.
Ao invés de usar "QTD" + Str( nDeposito, 1 ) usaria direto o número do depósito como chave de atualização.

No final tem os prós e os contras.
Se guardar igual uma ficha, teria que ficar recalculando no caso de alteração/exclusão, apesar de não ser muito comum ficar alterando/excluindo.
Talvez a melhor opção seja fazer de trás pra frente, partindo do saldo final, assim quanto mais recente mais rápido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro