Problema no MySQL????

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema no MySQL????

Mensagem por JoséQuintas »

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

Código: Selecionar todos

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:

Código: Selecionar todos

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Problema no MySQL????

Mensagem por Poka »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema no MySQL????

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder