SELECT в UPDATE (Запрос в запросе). Умножение полей таблиц между собой - MySQL

Узнай цену своей работы

Формулировка задачи:

Привет уважаемые посетители этого форума! Не раз он меня выручал в сложных ситуациях) Надеюсь, что и в этот раз выручит) Есть запрос: К примеру нужно выбрать два поля таблицы (одно с одной, другое с другой) и нужно перемножить значения этих полей между собой и вернуть в нужное поле ТОЛЬКО с помощью UPDATE. Вот как это я пытаюсь сделать:
"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"
Выдаёт следующую ошибку: 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. В программе нету ошибок только в запросе.

Решение задачи: «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;

Объяснение кода листинга программы

  1. Запрос на обновление данных в таблице grocery_supermarket_manager.stock
  2. В запросе используется оператор UPDATE
  3. В качестве источника данных для обновления используется таблица grocery_supermarket_manager.products
  4. Используется подзапрос для получения значения поля price_for_one из таблицы grocery_supermarket_manager.products
  5. Используется подзапрос для получения значения поля quantity из таблицы grocery_supermarket_manager.stock
  6. Выполняется умножение значений полей price_for_one и quantity
  7. Результат умножения присваивается полю price в таблице grocery_supermarket_manager.stock
  8. В условии WHERE указывается, что обновление должно быть выполнено только для записи с id_stock равным 1

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы