ОБНОВЛЕНИЕ SQL ТАБЛИЦА вычитать новое значение к сохраненному значению с переменными связывания или параметрами связывания - PullRequest
0 голосов
/ 03 июля 2018

У меня возникают трудности с правильным ОБНОВЛЕНИЕМ этой информации в базе данных MySQL, я пытаюсь вычесть -5 из текущего значения моего stock_quantity. Я добавил пару попыток, но ни одна из них не сработала.

Есть идеи?

Название таблицы: продукты

 item_id  product_name  department_name  price   stock_quantity
 -------  ------------  ---------------  ------  --------------

   1        Samsung S9                     899     59
   2        Samsung S8                     519.98  49
   3        Samsung S7                     297.89  27
   4        iPhone X                       1299    50    
   5        iPhone 8+                      699.99  10
   6        iPhone 8                       639.95  8
   7        iPhone 7+                      579.99  11
   8        iPhone 7                       399     6






 function updateProduct() {
   console.log( "Updating stock...\n");
       var query = connection.query(
       "UPDATE products SET ? WHERE ?",
     [
        {
          //all these alternatives seem not to work
            stock_quantity:  "'stock_quantity' -5"
          // alternatives 2
            stock_quantity:  "stock_quantity" -5
          // alternatives 3
            stock_quantity:  "stock_quantity"+" -5"
          // alternatives 4
            stock_quantity:  stock_quantity +" -5"
        },
        {
            item_id : 4
        },
    ],
    function (err, res) {
        console.log(res.affectedRows + " products updated!\n");
    }
)

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Запрос, который вы ищете, выглядит примерно так: здесь мы вычитаем пять из текущего stock_quantity для элемента с идентификатором '4':

UPDATE products SET stock_quantity=stock_quantity - 5 WHERE item_id=4

Итак, ваш код будет выглядеть так:

function updateProduct() {
   console.log( "Updating stock...\n");
   var query = connection.query(
     "UPDATE products SET stock_quantity=stock_quantity - 5 WHERE item_id=4", function(err, res) {
       console.log(res.affectedRows + " products updated!\n");
   });
}
0 голосов
/ 03 июля 2018

Редактировать:

Вы пытались привязать значение 'stock_quantity' -5 к полю stock_quantity.

Поскольку вы работаете со связанными параметрами, вам нужно до вашего оператора UPDATE получить значение 'stock_quantity' (пример: в oldValue var).

Как только вы получите это значение, вы сможете обновить 'stock_quantity', выполнив stock_quantity: oldValue - 5

Старый:

Вы должны написать что-то вроде

UPDATE ... SET stock_quantity = stock_quantity - 5 WHERE ...

Что дает ..

stock_quantity:  "'stock_quantity' = 'stock_quantity' - 5"

Это сделает ваш запрос похожим на:

UPDATE products SET 'stock_quantity' = 'stock_quantity' - 5 WHERE 'item_id' = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...