Update records from one table using values from another table

0

I need to do an update on a table with the value of another table and there are many records so I'm doing it this way, but my query is not working:

UPDATE produtos SET produtos.fornecedor = movimentacao.Fornecedor FROM produtos,
movimentacao WHERE produtos.codigo = movimentacao.Codigo ORDER BY movimentacao.Data DESC LIMIT 1
  

ERROR: # 1064 - You have an error in your SQL syntax; check the manual   that corresponds to your MySQL server version for the right syntax to   use near 'FROM products, move WHERE products.codigo =   ORDER B 'at line 3 code

Does anyone know how to resolve this syntax error?

    
asked by anonymous 07.05.2014 / 20:10

3 answers

4

I believe that whatever you want to be this

UPDATE Campeonato 
SET Nome =(SELECT Nome FROM Time WHERE Campeonato_Id= Campeonato.Id AND Position = '1')
WHERE
Ano ='2013'

In the example above I'm updating the Nome of all Campeonatos of Year from 2013 to Nome of Time corresponding to% Championship and occupying the first position.

I do not quite understand the query you want to do, but following this same example, I believe you can succeed.

UPDATE produtos 
SET produtos.fornecedor = (SELECT movimentacao.Fornecedor 
 FROM movimentacao WHERE movimentacao.Codigo = produtos.codigo
 ORDER BY movimentacao.Data DESC LIMIT 1
)
WHERE
 condicao
    
07.05.2014 / 20:40
4

You need a UPDATE JOIN in this case:

UPDATE produtos 
   [INNER JOIN | LEFT JOIN] movimentacao ON produtos.codigo = movimentacao.Codigo
   SET produtos.fornecedor = movimentacao.Fornecedor
   WHERE condicao

The problem in this case is that you can not use ORDER BY . It would have to see if a where would solve in your specific case.

To keep ORDER BY , the solution would be a subquery:

UPDATE produtos
   SET produtos.fornecedor = (
      SELECT movimentacao.Fornecedor
         FROM movimentacao
         WHERE produtos.codigo = movimentacao.Codigo
   )
   ORDER BY movimentacao.Data DESC
   LIMIT 1
    
07.05.2014 / 20:26
0

I have a question, I need to subtract a row (quantity) from the table (sales) that was entered by the user in the form, in the table (products) in the (inventory) line, and only of the last record registered in the table (products). I made a sales registration form, where it inserts the data in the table for registration, and then I created an update to update the stock value (stock-quantity = stock). My php code I'm using was this:

     <?php 
include 'conexao.php';
$id = $_POST['id'] // Este id só existe na tabela de vendas, na tabela de produto é id_produtos
$cd_barras = $_POST["cd_barras"] // 
$nomeproduto =$_POST["nomeproduto"]
$preco_venda = $_POST["preco_venda"]
$quantidade = $_POST["quantidade"]
$tamanho = $_POST["tamanho"]

$decqtde = $quantidade ; // variável para subtração estoque-quantidade

$sql = "INSERT into vendaprodutos (cd_barras, nomeproduto, preco_venda, quantidade, tamanho) VALUES (NULL,'$cd_barras','$nomeproduto','$preco_venda','$quantidade','$tamanho')";
mysql_query($sql,);

$sql = "UPDATE produtos set produtos.estoque = vendaproduto.quantidade WHERE id = '$cd_barras'; "; 
mysql_query($sql); 

header("Location: venda.php");
?>

You can help me, because I tried in some forums and could not solve.

    
08.07.2015 / 14:22