Как обновить количество, ссылаясь на другую таблицу php / mysql - PullRequest
0 голосов
/ 15 марта 2020

Я немного новичок, и я уверен, что это довольно просто, но я пробовал разные вещи, и я не могу с этим справиться.

У меня есть таблица продуктов, которая содержит идентификатор категории, и я хочу установить значение 0, которое сохраняется в другой таблице.

Это последнее, что я пробовал:

function wipeprod(){
UPDATE stock_available
    INNER JOIN
        product stock_available
        ON
        (
            product.id_category_default != 3
            OR
            product.id_category_default != 10
            OR
            product.id_category_default != 943
        )
    SET
        stock_available.quantity = 0;
}

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Вы можете использовать такой оператор обновления, используя INNER JOIN:

UPDATE stock_available s
  JOIN
       (
          SELECT id
            FROM product
           WHERE id_category_default NOT IN (3,10,943)
        ) AS p ON p.id = s.product_id
    SET
        s.quantity = 0;

, когда не требуется правильный запрос после ключевого слова JOIN

0 голосов
/ 15 марта 2020

Я подозреваю, что вы хотите установить для столбца quantity в таблице stock_available значение 0 для продуктов, которые не относятся к категориям 3, 10 и 943.

Если это так, вы можете использовать update ... join синтаксис следующий:

update stock_available s
inner join product p on p.product_id = s.product_id
set s.quantity = 0
where p.id_category_default not in (3, 10, 943)

Основные проблемы с исходным запросом:

  • join отсутствует предикат для product_id

  • вы хотели AND условие, а не OR; NOT IN пригодится, чтобы сократить это.

...