junaooaks 3 Denunciar post Postado Setembro 10, 2012 ola pessoal to tentando fazer um update na mesma tabela que quero fazer o select e o seguinte tabela produto entrada pedido na entrada de pedido acrescento a quantidade de produto a mais tipo tem um pedido com o produto x que esta em estoque com 5 unidade dentro entrada com o pedido, o produto x vai aumentar em quantidade no estoque tem como fazer um update verifica a quantidade em estoque soma mais quantidade a inserir ? $sql = 'UPDATE produto SET estoqueAtual = (SELECT sum(estoqueAtual + ?) as soma FROM produto WHERE idproduto = ?) WHERE produto.idproduto = ?'; $stmt = $this->conex->prepare($sql); $stmt->bindParam(1, $quantidade, PDO::PARAM_INT); $stmt->bindParam(2, $codpro, PDO::PARAM_INT); por logica foi o que eu pensei, mas da erro posta um ex. Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 10, 2012 Boa tarde amigo, Acho que você só errou no SUM, tire a soma de dentro dele e faça um teste. Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Setembro 10, 2012 se tirar a soma dentro SUM() não aparece erro mas também não soma os valores Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 10, 2012 SELECT (SUM(estoqueAtual) + ?) as soma Não aparece o valor que você quer? Lembre-se de que não podemos somar valores nulos, então você não pode ter nenhum registro como NULL na coluna estoqueAtual... Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Setembro 10, 2012 SELECT (SUM(estoqueAtual) + ?) as soma Não aparece o valor que você quer? Lembre-se de que não podemos somar valores nulos, então você não pode ter nenhum registro como NULL na coluna estoqueAtual... desta forma que você colocou nao funciona da este erro Invalid parameter number: number of bound variables does not match number of tokens Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 10, 2012 Você colocou copiou da maneira que eu coloquei com o ponto de interrogação ou colocou um número no lugar? Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Setembro 11, 2012 Não ficou bem claro de onde você vai tirar essa quantidade a somar.. mas supondo q você tenha 1 form onde o usuario vai digitar, é só declarar normal em PHP como uma variavel $_POST (ou $_GET); ex: $quantidade_a_ser_somada = $_POST['cxnumero']; $sql = mysql_query("update produto set estoqueAtual=estoqueAtual+'$quantidade_a_ser_somada' where idproduto=1") or die(mysql_error()); com o idproduto você pode pode fazer da mesma forma. Sugestão: eu faria uma busca antes, assim o form já seria carregado apenas com o id selecionado, e na sql utilizaria outra variavel como foi feito c/ a quantidade a ser somada.. qqer coisa retorne Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 11, 2012 Não ficou bem claro de onde você vai tirar essa quantidade a somar.. mas supondo q você tenha 1 form onde o usuario vai digitar, é só declarar normal em PHP como uma variavel $_POST (ou $_GET); ex: $quantidade_a_ser_somada = $_POST['cxnumero']; $sql = mysql_query("update produto set estoqueAtual=estoqueAtual+'$quantidade_a_ser_somada' where idproduto=1") or die(mysql_error()); com o idproduto você pode pode fazer da mesma forma, ou - mais sensato - faça uma busca antes e carregue o form apenas com o id selecionado,ok? A quantidade que vai ser somada, pelo que eu entendi, vem do banco e não de um form digitado. Foi o que eu entendi do rapaz pelo menos :huh: Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Setembro 11, 2012 a quantidade a ser somada, e a que esta no banco e o que vem do form o Fernando C acertou. so que estou usando pdo como metodo de interagir com o banco de dados por isto o sinal (?) no meio da consulta. e onde eu acho que pode ser o problema . Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 11, 2012 a quantidade a ser somada, e a que esta no banco e o que vem do form o Fernando C acertou. so que estou usando pdo como metodo de interagir com o banco de dados por isto o sinal (?) no meio da consulta. e onde eu acho que pode ser o problema . Ah bom. Então nesse caso você tem que fazer o seguinte amigo, desenvolver sua query e testar ela direto no banco (sem ponto de interrogação, com valores), verificar se é o que você precisa, se o SUM + Valor está funcionando como quer e etc. Depois você passa isso pra aplicação, fazendo os ajustes do PDO e tudo mais. Primeiro veja se a query que te passei te atende, direto no banco. Se atender ótimo, senão vamos achar outra forma. Na sequência vemos qual o problema do ponto de interrogação. Precisamos separar os problemas. Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Setembro 11, 2012 mano. a sql nao apresenta problema colocado desta forma: $sql = 'UPDATE produto SET estoqueAtual = (SELECT sum (estoqueAtual) FROM produto WHERE idproduto = ?) WHERE produto.idproduto = ?'; so que tambem nao faz a soma dos valores com o form. usando (?) parou de aparecer o erro. so que nao faz a soma do valor, nao alterando o valor na tabela nao altera o valor da tabela produto. $sql = 'UPDATE produto SET estoqueAtual = (SELECT sum (estoqueAtual + ?) FROM produto WHERE idproduto = ?) WHERE idproduto = ?'; $stmt = $this->conex->prepare($sql); $stmt->bindParam(1, $quantidade, PDO::PARAM_INT); $stmt->bindParam(2, $codpro, PDO::PARAM_INT); $stmt->bindParam(3, $codpro, PDO::PARAM_INT); Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 11, 2012 Amigo, tire o ponto de interrogação de dentro do SUM. Rodou a query direto no banco como eu sugeri? Fez testes lá? Achou a sintaxe certa pra ela, onde vai a soma e tudo mais? Após ter feito isso parta para o PHP. Uma coisa de cada vez. Compartilhar este post Link para o post Compartilhar em outros sites
ricci ottadnot 4 Denunciar post Postado Setembro 11, 2012 mano. a sql nao apresenta problema colocado desta forma: $sql = 'UPDATE produto SET estoqueAtual = (SELECT sum (estoqueAtual) FROM produto WHERE idproduto = ?) WHERE produto.idproduto = ?'; so que tambem nao faz a soma dos valores com o form. usando (?) parou de aparecer o erro. so que nao faz a soma do valor, nao alterando o valor na tabela nao altera o valor da tabela produto. $sql = 'UPDATE produto SET estoqueAtual = (SELECT sum (estoqueAtual + ?) FROM produto WHERE idproduto = ?) WHERE idproduto = ?'; $stmt = $this->conex->prepare($sql); $stmt->bindParam(1, $quantidade, PDO::PARAM_INT); $stmt->bindParam(2, $codpro, PDO::PARAM_INT); $stmt->bindParam(3, $codpro, PDO::PARAM_INT); Acredito que você deva fazer da seguinte forma: SET estoqueAtual = estoqueAtual + (SELECT SUM(?) FROM produto ...) Compartilhar este post Link para o post Compartilhar em outros sites
junaooaks 3 Denunciar post Postado Setembro 11, 2012 Amigo, tire o ponto de interrogação de dentro do SUM. Rodou a query direto no banco como eu sugeri? Fez testes lá? Achou a sintaxe certa pra ela, onde vai a soma e tudo mais? Após ter feito isso parta para o PHP. Uma coisa de cada vez. mano e isto que você quis dizer fiz a consulta dentro do sql trocando as ? com o valor da variavel UPDATE produto SET estoqueAtual = (SELECT sum (estoqueAtual + '5') FROM produto WHERE idproduto = '9') WHERE idproduto = '9' ou assim: UPDATE produto SET estoqueAtual = (SELECT sum (estoqueAtual) FROM produto WHERE idproduto = '9') WHERE idproduto = '9' ambos da o seguinte erro: #1093 - You can't specify target table 'produto' for update in FROM clause Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 11, 2012 A mesma tabela e coluna estão no SELECT e no UPDATE , quase como trancar a gaveta com a chave dentro ... Compartilhar este post Link para o post Compartilhar em outros sites
DiegoAngra07 21 Denunciar post Postado Setembro 11, 2012 Cara não to mais entendendo o que você quer fazer. Se na tua informação vem do form porque fazer essa subquery? Se tu quer somar o estoqueAtual com um valor não bastaria ser: UPDATE produto SET estoqueAtual = estoqueAtaul + valor ? Compartilhar este post Link para o post Compartilhar em outros sites
Carlos Ost 0 Denunciar post Postado Julho 1, 2015 experimente isso: $sql = "UPDATE produto SET estoqueAtual = estoqueAtual + :valor FROM produto WHERE idproduto = :id" $stmt = $this->conex->prepare($sql); $stmt->bindValue(":valor", $valor); $stmt->bindValue(":id", $idProduto); $stmt->execute(); Lembrando que a variavel $valor contem o valor que você quer somar ao estoque atual e a variável $idProduto contem o id do produto que você ter o estoque atualizado. Compartilhar este post Link para o post Compartilhar em outros sites
Fillipe Lucas 0 Denunciar post Postado Setembro 30, 2015 Galera não sei se vão conseguir me ajudar mais já estou ficando preocupado, se puderem me ajudar agradeço. Tenho duas tabelas: tabela: produto Produtoid, qtd_total tabela: aquisicao id, Produtoid, quantidade Gostaria de pegar a célula quantidade da tabela aquisição mais apenas o ultimo registro e somar com a célula qtd_total onde os Produtoid sejam iguais e depois fazer um update na celular qtd_total com o resultado dessa soma. Já fiz uma parte mais não consigo fazer o update. select (select qtd_total from produto,aquisicao where aquisicao.Produtoid = produto.Produtoid order by aquisicao.id desc limit 1) as tb1, (select quantidade from aquisicao order by id desc limit 1) as tb2, (select SUM(tb1+tb2)) as result, (select Produtoid from aquisicao order by id desc limit 1) as compara; update produto set qtd_total = result where Produtoid = compara; Compartilhar este post Link para o post Compartilhar em outros sites
ConteudoAnimal.com.br 0 Denunciar post Postado Setembro 30, 2015 Ola,Eu acho que vc precisa fazer o php para somar o valor do form com o valor do produto no dbEm seguida fazer update na tabela de forma mais simples Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Setembro 30, 2015 Eu acho que o correto seria abandonar um post originalmente criado em 2012 e criar um novo. Compartilhar este post Link para o post Compartilhar em outros sites