SELECT в UPDATE (Запрос в запросе). Умножение полей таблиц между собой - MySQL
Формулировка задачи:
Привет уважаемые посетители этого форума!
Не раз он меня выручал в сложных ситуациях)
Надеюсь, что и в этот раз выручит)
Есть запрос:
К примеру нужно выбрать два поля таблицы (одно с одной, другое с другой) и нужно перемножить значения этих полей между собой и вернуть в нужное поле ТОЛЬКО с помощью UPDATE.
Вот как это я пытаюсь сделать:
Выдаёт следующую ошибку:
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 'SET stock.price = products.price_for_one * st.quantity WHERE stock.id_stock = 1' at line 1
Что мне посоветуете (только адекватные решения для этого вопроса)?
Что использую MySQL, C#, .NET, SQLconnector for NET.
В программе нету ошибок только в запросе.
"UPDATE grocery_supermarket_manager.stock AS stock, " + "(SELECT price_for_one FROM grocery_supermarket_manager.products WHERE id_products = 1) AS products, " + "(SELECT quantity FROM grocery_supermarket_manager.stock WHERE id_stock = 1) AS st, " + " SET stock.price = products.price_for_one * st.quantity" + " WHERE stock.id_stock = 1"
Решение задачи: «SELECT в UPDATE (Запрос в запросе). Умножение полей таблиц между собой»
textual
Листинг программы
UPDATE grocery_supermarket_manager.stock AS T1, (SELECT price_for_one FROM grocery_supermarket_manager.products WHERE id_products = 1) AS T2, (SELECT quantity FROM grocery_supermarket_manager.stock WHERE id_stock = 1) AS T3 SET T1.price = T2.price_for_one * T3.quantity WHERE T1.id_stock = 1;
Объяснение кода листинга программы
- Запрос на обновление данных в таблице
grocery_supermarket_manager.stock
- В запросе используется оператор UPDATE
- В качестве источника данных для обновления используется таблица
grocery_supermarket_manager.products
- Используется подзапрос для получения значения поля
price_for_one
из таблицыgrocery_supermarket_manager.products
- Используется подзапрос для получения значения поля
quantity
из таблицыgrocery_supermarket_manager.stock
- Выполняется умножение значений полей
price_for_one
иquantity
- Результат умножения присваивается полю
price
в таблицеgrocery_supermarket_manager.stock
- В условии WHERE указывается, что обновление должно быть выполнено только для записи с id_stock равным 1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д