Как выполнить UPDATE нескольких значений по данным из другой таблицы?

107
10 марта 2021, 04:30

Есть 2 таблицы, мне нужно увеличить значение price стобца s_variants на 10% где brand_id = 84 и price < 1000. Пробывал сделать через JOIN он не работает, попробывал через подзапрос

UPDATE `s_variants` 
SET `s_variants`.`price`= `s_variants`.`price` * 1.1  
WHERE `s_variants`.`price` < 1000 
AND `s_variants`.`product_id` = 
(SELECT `s_products`.`id` FROM `s_products` WHERE `s_products`.`brand_id` = 84)

Но, получаю ошибку, что подзапрос возвращает несколько вариантов. Как правильно составить запрос, что бы выполнить задачу?

таблица s_products

|  id  |  brand_id  |
 -------------------
|   1  |     21     |
|   5  |     84     |
|  235 |     84     |

таблица s_variants

|  id  | product_id |  price |
 ----------------------------
|  38  |     1      |   545  |
|  25  |     5      |   158  |
|  35  |     235    |   999  |
Answer 1

Абсолютно правильная ошибка, результат выполнения подзапроса - множество, значит знак равенства не подойдет. Вам нужно использовать in

UPDATE `s_variants` 
SET `s_variants`.`price`= `s_variants`.`price` * 1.1  
WHERE `s_variants`.`price` < 1000 
AND `s_variants`.`product_id` IN 
(SELECT `s_products`.`id` FROM `s_products` WHERE `s_products`.`brand_id` = 84)

пример на sqlfiddle

READ ALSO
Как переместить файл в нужную папку с php?

Как переместить файл в нужную папку с php?

Нужна помощь по php знающих людейЯ беру с сайта картинку и ее название с полей формы input типом text и input типом file, которые пользователь загружает...

88
Ответ на запрос об оплате php

Ответ на запрос об оплате php

Читаю документацию по реализации оплаты на сайте, и не понимаю, как реализовать ответ

126
Переменные в переменной, ошибка syntax

Переменные в переменной, ошибка syntax

Нужно занести переменные в одну переменную, чтобы на выходе получилось вот так:

78
PHP магия с индексом массива

PHP магия с индексом массива

Всем добрый вечер, столкнулся с непонятной проблемойВ скрипте:

93